파일 업로드 및 다운로드를 달성하기 위해 파일

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), 즉, 서버는 요청을 성공적으로 처리 하였다.

发布了376 篇原创文章 · 获赞 172 · 访问量 9万+

추천

출처blog.csdn.net/Eider1998/article/details/104217328