개요
파일 업로드 자바 웹 프로젝트는 일반적인 기능이며, 파일을 업로드 성공하지 못했습니다, 다음 단계가 필요 :
1. POST로 설정해야합니다 메소드 속성의 형태.
2. 폼에 enctype 속성은 / 폼 데이터 (폼 데이터 처리 이진 스트림을 사용하는 브라우저 전용 방식)으로 multipart로 설정되어야한다.
3.pom 파일은 평민 - 파일 업로드 의존성을 추가합니다.
4. MultipartResolver 스프링 MVC 프로필 배치.
예제 파일 업로드는
여전히 (: 이전에 연결된 단락 SpringMVCProject 프로젝트 위의 예제 프로그램 완료 https://www.jianshu.com/p/fde4557c527c을 ).
파일 업로드 페이지의 배경 이미지
폴더 "이미지"를 만들고 "backImage.jpg"라는 프로젝트의 웹 애플리케이션 디렉토리에 배경 이미지를 넣어 :
POM 설정 파일은
평민 - 파일 업로드 프로젝트의 POM 파일에 의존 추가 :
1 <의존성> 2 <의 groupId> 몬즈 파일 업로드 </의 groupId> 3 <artifactId를> 몬즈 파일 업로드 </ artifactId를> 4 <버전> 1.4 </ 버전> 5 </ 의존성>
JSP 파일 작성
다음과 같은 프로그램을 작성, 프로젝트의 웹 애플리케이션 디렉토리에 파일 uploadfile.jsp 생성을 :
1 <% 페이지 언어 @ = " 자바 "의 contentType = " text / html과; 문자셋 = UTF-8 "pageEncoding = " UTF-8 "%> 2 <HTML> 3 <head> 4 <메타 HTTP-당량 = " 콘텐츠 - 입력 "내용 =" text / html과 "문자 집합 =" UTF-8 "> 5 <제목>을 UploadFile </ 제목> 6 <스타일 유형 =" 텍스트 / CSS "> 7 몸 { 8 배경 - 이미지 : 홈페이지 (이미지 / backImage .JPG); 9 배경 사이즈 : 커버; </ 스타일> 12 </ head> 13 <body> 14 <센터> 15 <H3>文件上传页面</ H3> 16 로 <br> 17 <form 조치 = " 업로드 "METHOD = " 후 "에 enctype = " 다중 / 폼 데이터 "> 18 <표> 19 <TR> 20 <TD> <라벨>文件信息</ 라벨> </ TD> 21 <TD> <input 타입 =" 텍스트 "이름 =" 정보 "> </ TD> 22 </ TR> (23)는 <TR> 24 </ 라벨> </ TD : <TD> <레이블> 파일 선택 >25 <TD> <input 타입 = " 파일 "NAME = " 파일 "> </ TD> 26 </ TR> 27 <TR> 28 <TD> <input 타입 = " 제출 이드 =" " 제출 "= 값 " 上传 "> </ TD> 29 </ TR> 30 </ 테이블> 31 </ FORM> 32 </ 센터> 33 </ body> 34 </ HTML>
컨트롤러 클래스를 만듭니다
다음과 같은 프로그램을 작성, com.snow.dcl.controller 패키지 UploadFileController 클래스 파일을 만들 수 :
1 @Controller 2 공용 클래스 UploadFileController { 3 @RequestMapping (값 = " / 업로드 "METHOD = RequestMethod.POST) 4 @ResponseBody 5 공개 문자열 업로드 (HttpServletRequest의 요청 @RequestParam ( " 정보 ") 문자열 정보 @RequestParam ( " 파일 ")의 MultipartFile 파일) 던졌습니다 IOException가 { 6 경우 (file.isEmpty ()) {! 7 문자열 경로 = request.getServletContext () getRealPath (." 파일 "); 8 문자열 파일명 = file.getOriginalFilename (); 9 파일을 UploadFile = 새 파일 (경로 fileName에); 10 경우 (uploadFile.getParentFile () 존재 (!).)를 { 11 uploadFile.getParentFile () mkdirs ().; 12 } 13 file.transferTo ( 새 파일 (경로 + fileName에 Win32 시스템 +)); 14 복귀 " 성공! "; 15 } 다른 { 16 반환 " 아니 파일! "; 17 } 18 } 19 }
@ResponseBody 노트에 컨트롤러 프로그램을 사용하여, 당신은! "업로드 파일"는 돌아갈 수와 문자열 데이터는 "업로드 파일을 추가되지 않습니다!"가 전면에, 봄 MVC 설정 파일 springmvc-servlet.xml 파일의 다른 구성 보기 JSP 파일을 반환합니다.
springmvc-servlet.xml에 구성 파일
은 다음과 같이 증가 프로파일 구성 파일 springmvc-servlet.xml에 MultipartResolver에서 :
1 <XML 버전 = " 1.0 "인코딩 = " UTF-8 "?> 2 <콩의 xmlns = " http://www.springframework.org/schema/beans " 3 의 xmlns :이 xsi = " HTTP : // WWW. w3.org/2001/XMLSchema-instance " 4 : 컨텍스트의 xmlns =" http://www.springframework.org/schema/context " 5 개 의 xmlns : MVC =" http://www.springframework.org/schema/mvc " 6 는 xsi :의 schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context에 http : // www가 .springframework.org / 스키마 / 환경 / 봄 - context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "> . 7 . 8 <! - 클래스 관련 주석 스프링을 스캔하는 경우, 자바 클래스 스프링 서브 - 패킷들 또는 패킷들의 자동 스캔 기본 패키지 세트 스프링은 빈으로 등록 할 수 -> 9. <컨텍스트 : 스캔 부품 베이스 - 패키지 = " com.snow.dcl.controller는 "/> 10 (11). <MVC는 : 주석 - 기반 /> (12)는 <MVC : 기본 -servlet 처리기 /> 13 인 14 <! - 뷰 리졸버 ->15 <빈 ID = " 의 viewResolver " 클래스 = " org.springframework.web.servlet.view.InternalResourceViewResolver "> 16 <속성 명 = " 접두어 "> 17 <값> / WEB-INF / 콘텐츠 / </ 값> 18 < / 속성> 19 <속성 명 = " 접미사 "> 20 <값> .jsp를 </ 값> 21 </ 속성> 22 </ 빈> 23 24 <빈 ID = " multipartResolver "클래스 = "org.springframework.web.multipart.commons.CommonsMultipartResolver "> 25 <! -이> - 파일 크기보다 20M 업로드 (26)이다 <속성 이름 =" maxUploadSize "> 27 <값> 20971520 </ 값> 28 </ 속성> (29) <! - 요청 부호화 형식, 동일한 속성 값 pageEncoding JSP 파일이어야 -> 30 <속성 명 = " defaultEncoding "> 31 인 <값> 8 UTF -. </ 값> 32 </ 속성> 33 인 </ 빈> 34이고 35 > </ 콩 36
주 :
1. 구성 MultipartResolver 또한 MVC 네임 스페이스를 추가했다.
2. 추가 <MVC : 기본 - 서블릿 핸들러 /> 이미지 및 기타 배경 정적 자원을 처리하도록 구성.
3. 추가 <MVC : 기본 - 서블릿 핸들러 /> 구성은 <MVC : 주석 중심의 /> 추가해야합니다 그렇지 않으면 상황이 해결되지 않습니다 @Controller 노트, 그들은 일치하지 않을 때 요청 유형의 요청을 처리하는 선도, 우리 모두가 이동 <MVC : 기본적 서블릿 처리기 /> 즉 기본 서블릿 프로세스 정적 자원 (예를 들어, 이미지 리소스) 대응하는 컨트롤러 기본 서블릿이 처리되지 않으며 있기 때문에.
테스트
: TomcatServer가 시작이 완료 후, 브라우저를 열고 다음을 입력 시작 HTTP : // localhost를 : 8080 / uploadfile.jsp , 성공적인 방문을. 모든 파일을 추가하지 마십시오, 직접 제출 : TXT 파일로 테스트를 추가 제출 : 프로젝트 디렉토리를 대상 디렉토리 아래에보기 프로젝트 디렉토리 파일 디렉토리에 파일을 업로드 파일 디렉토리를 생성합니다 : 이 시점에서, 파일 업로드 기능 녹음이 완료됩니다.