들어가기 전에
이번 시간엔 웹 어플리케이션에서 파일 업로드와 다운로드를 하는 방법에 대해 알아보도록 하겠습니다.
학습 목표
- Multipart에 대해 이해한다.
- 웹 어플리케이션에서 파일 업로드, 다운로드 방법에 대해 이해한다.
핵심 개념
- Multipart
- enctype="multipart/form-data"
- MultipartFile
학습하기
들어가기 전에
이번 시간엔 웹 어플리케이션에서 파일 업로드와 다운로드를 하는 방법에 대해 알아보도록 하겠습니다.
학습 목표
핵심 개념
학습하기
Multipart?
웹 클라이언트가 요청을 보낼 때 HTTP프로토콜의 바디 부분에 데이터를 여러 부분으로 나눠서 보내는 것입니다.
HttpServletRequest는 파일 업로드를 지원 안 함
Spring MVC에서의 파일 업로드
파일 업로드를 위한 라이브러리 추가
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
스프링 설정 추가
@Bean
public MultipartResolver multipartResolver() {
org.springframework.web.multipart.commons.CommonsMultipartResolver multipartResolver = new org.springframework.web.multipart.commons.CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(10485760); // 1024 * 1024 * 10
return multipartResolver;
}
파일 업로드 폼
<form method="post" action="/upload"
enctype="multipart/form-data">
......
<input type="file" name="file">
<input type="submit">
</form>
Controller에서의 업로드 처리
Controller에서의 다운로드 처리
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Type", contentType);
response.setHeader("Content-Length", fileLength;
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");
생각해보기
참고 자료
https://commons.apache.org
https://stackoverflow.com