[Spring] 스프링 MVC - 파일 업로드 처리, 다운로드 처리
- 화면단에서는 파일처리를 위해 form 태그내에 enctype 및 전송 방식 설정
HTML form 태그의 enctype 속성을 "multipart/form-data"로 설정 method 속성을 "post"로 설정
ex)
<form method="post" enctype="multipart/form-data">
...
</form>
- 파일업로드에 필요한 jar 라이브러리를 추가
- 일반 웹 프로젝트의 경우 WEB-INF/lib폴더에 라이브러리 추가
- Maven을 이용할 경우 pom.xml의 dependency 태그를 추가
ex)
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
- 스프링 설정파일에 MultipartResolver 설정
- Multipart 지원 기능을 사용하려면 먼저 MultipartResolver를 스프링 설정 파일에 등록. 스프링에서 기본으로 제공하는 MultipartResolver는 CommonsMultipartResolver이다. ComonsMultipartResolver를 MultipartResolver로 사용하려면 다음과 같이 빈 이름으로 "multipartResolver"를 사용해서 등록
- DispatcherServlet은 이름이 "multipartResolver"인 빈을 사용하기 때문에 다른 이름(bean id)을 지정할 경우 MultipartResolver로 사용되지 않음
<bean id="martipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
또는 CommonsMultipartResolver의 프로퍼티를 이용하여 최대 가능한 업로드 사이즈 등 지정 가능
<bean id="multipartResolver class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2000000" />
</bean>
CommonsMultipartResolver 클래스의 프로퍼티
프로퍼티 | 타입 | 설명 |
---|---|---|
maxUploadSize | long | 최대 업로드 가능한 바이트 크기, -1은 제한이 없음을 의미, 기본값은 -1 |
maxInMemorySize | int | 디스크에 임시 파일을 생성하기 전에 메모리에 보관할 수 있는 최대 바이트크기, 기본 값은 10240 바이트이다. |
defaultEncoding | String | 요청을 파싱할 때 사용할 캐릭터 인코딩. 지정하지 않을 경우, HttpServletRequest.setCharacterEncoding() 메서드로 지정한 캐릭터 셋이 사용. 아무 값도 없을 경우ISO-8859-1을 사용 |
uploadTempDir | Resource | 임시디렉터리 지정 |
Controller에서 요청정보(업로드 파일 데이터) 전달 받기
1) @RequestParam 어노테이션을 이용한 업로드 파일 접근
@RequestMapping(value="/upload", method=RequestMethod.Post)
public String upload(@RequestParam("upfile") MultipartFile upfile){...}
요청 파라미터와 매개변수 이름이 같으면 @RequestParam 생략가능
@RequestMapping(value="/upload", method=RequestMethod.Post)
public String upload(MultipartFile upfile){...}
2) MultipartHttpServletRequest를 이용한 업로드 파일 접근
MultipartHttpServletRequest 인터페이스
- Multipart 요청이 들어올 때 내부적으로 원본 HttpServletRequest 대신 사용되는 인터페이스.
- MultipartHttpServletRequest 인터페이스는 HttpServletRequest 인터페이스와 MultipartRequest인터페이스를 상속받고 있다.
- 즉, 웹 요청 정보를 구하기 위한 getParameter()와 같은 메서드와 Multipart관련 메서드를 모두 사용가능.
MultipartRequest 인터페이스의 파일 관련 주요 메서드
Author And Source
이 문제에 관하여([Spring] 스프링 MVC - 파일 업로드 처리, 다운로드 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bey1548/Spring-스프링-MVC-파일-업로드-처리-다운로드-처리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)