A : 파일 업로드
문서의 대부분은 양식 양식을 통해 백엔드 서버 업로드에 제출, 따라서 업로드 기능을 달성하기 위해, 당신은 파일 업로드 양식을 제공해야하고, 형태는 다음과 같은 세 가지 조건을 충족해야합니다 :
1.form 형성 방법 속성은 POST로 설정되고;
양식에 enctype 멀티 파트 / 폼 데이터 2.form 속성;
<입력 유형 = "파일"이름 = "파일 이름"/> 파일 업로드 입력 상자를 제공합니다.
다음과 같이 파일 업로드 양식의 예는 다음과 같습니다 (여러 HTML5 속성은 다중 파일 업로드 가능, 새로운 속성이다)
<from action "uploadUrl" method = "post" enctype = "multipart/form-data">
<input type = "file" name = "filename" multiple = "multiple"/>
<input type = "submit" value = "文件上传"/>
</from>
형태 속성에 enctype 멀티 파트 / 폼 데이터의 형태는, 브라우저가 이진 스트림을 처리 된 폼 데이터를 사용하면, 서버는 파일 분석 처리 요구를 업로드한다. 스프링 MVC는 MultipartResolver를 통해 파일 업로드 기능을 얻을 수 있습니다. 파일 업로드 기능을 달성 MultipartResolver. MultipartResolver는 인터페이스 객체, 당신은 그 구현 클래스 CommonsMultipartResolver를 통해 파일 업로드 작업을 완료해야 할 때.
<특성> 인코딩 형식 및 업로드 파일 크기를 허용하도록 구성함으로써, 파일 파서 CommonsMultipartResolver 클래스 속성 <등록> 엘리먼트를 다음과 같이 구성 될 수있다.
1.maxUploadSize (바이트) 업로드 된 파일의 최대 길이;
2.maxInMemorySize : 캐시의 최대 크기;
3.defaultEncoding : 기본 인코딩 형식을;
4.resolveLazily : 캡처 파일하기 위해, 컨트롤러에서 예외를 문서 분석을 연기.
참고 : 구현 내부 CommonsMultipartResolver MultipartResolver 인터페이스가 완벽하게 구현 클래스 개체 및 파일 구문 분석을 얻을 multipartResolver 문자열에 대한 참조는 클래스 것을 때문에 multipartResolver에 CommonsMultipartResolver를 구성 할 때, 당신은 ID 콩을 지정해야합니다.
스프링 MVC 파일 업로드 컴포넌트는 필요가 관련 JAR 패키지 지원 파일 업로드를 가져올 것으로, 아파치 코 몬즈는 FileUpload에 의존하므로 CommonsMultipartResolver는 아파치 코 몬즈는 FileUpload 기술로 스프링 MVC 내부입니다.
2 : 실행 파일 다운로드
파일 다운로드가 스프링 MVC 환경에서, 로컬 컴퓨터에서 파일 서버에 파일을 다운로드하는 것입니다, 파일 다운로드는 다음 두 단계로 나눌 수 있습니다 :
이 방법의 배경과 파일 이름 (파일 다운로드 디렉토리에 이름 "1.JPG"파일을 추가 할 필요가) 지정 파일을 다운로드 하이퍼 링크, 링크의 href 속성을 사용하여 클라이언트 파일 다운로드 페이지 1.
<a href = "${pageContext.request.contextPath}/downloads?filename = 1.jpg">
文件下载
</a>
쉽게 반환 HttpHeaders HttpStatus 객체와 객체가,이 두 객체가 파일을 다운로드 할 때 필요한 구성 정보를 입력하도록 설정을 정의 할 수 있습니다 사용, ResponseEntity 스프링 MVC는 전체 파일 다운로드를 제공하는 백그라운드에서 객체의 유형을 사용합니다.
@RequestMapping("/download")
public ResponseEntity<byte[]>fileDownload(HttpServletRequest request,String filename)throws Exception{
String path = request.getServletContext().getRealPath("/upload/");
File file = new File(path + File.separator + filename);
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", filename);
headers.setContentType(Media Type.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(fileUtils.readFileToByteArray(file),headers,HttpStatus.OK);
}
헤더 정보에 응답 Interner 미디어 유형 미디어 유형도 MIME 타입, 애플리케이션 / 진수 스트림의 미디어 Type.APPLICATION_OCTET_STREAM 값이라고 (즉, 매체 유형)를 나타내고, 즉, 이진 스트림에 다운로드 데이터.
HttpStatus의 HTTP 프로토콜의 종류의 상태를 나타내는이며, 예를 HttpStatus.OK 표현 (200), 즉, 서버는 요청을 성공적으로 처리 하였다.