StandardServletMultipartResolver 사용 시 설정,
<!-- 서블릿 표준용 multipartResolver를 스프링 빈으로 정의
- StandardServletMultipartResolver 사용 시 설정
> Servlet 3.0의 part를 이용한 MultipartFile 데이터 처리
-->
<!-- <beans:bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> -->
<!-- </beans:bean> -->
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!--
web.xml 의 설정 WAS(Tomcat) 자체 설정일 뿐임.
multipart-config : 메모리 사이즈, 업로드 파일 저장 위치, 최대 크기 설정 등
- location : 저장될 디렉토리(필수)
- max-file-size : 업로드 파일 최대 크기 (기본값: -1L, 제한이 없다)
- max-request-size : 한번 요청 시 업로드 파일 최대 크기
- file-size-threshold : 설정 크기가 넘는 경우 임시 디렉토리에 저장(기본값 0, 설정하지 않는 한 무조건 저장)
web.xml에서 설정하지 않을 때는 @MultipartConfig 어노테이션으로도 설정이 가능하다.
- 요청을 받는 컨트롤러에 설정이 가능하다. (메소드 라인이 아니라 컨트롤러인 클래스 라인에 설정한다)
- @MultiparConfig (
location : "D:/upload",
maxFileSize = "24639884",
maxRequestSize = "41639884",
fileSizeThreshold = "15839884"
)
임시 파일이 저장되는 경로는 다음과 같다.
- C:/User/PC-19/AppData/Local/Temp/
-->
<!-- <multipart-config> -->
<!-- <location>C:\\upload</location> -->
<!-- <max-file-size>3145728</max-file-size> -->
<!-- <max-request-size>41943040</max-request-size> -->
<!-- <file-size-threshold>20971520</file-size-threshold> -->
<!-- </multipart-config> -->
</servlet>
<!-- MultipartFile CommonsMultipartResolver 설정 시 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 하나의 요청당 파일 업로드 용량(3145728 Byte) -->
<property name="maxUploadSize" value="3145728"/>
<!-- 메모리에 저장되는 최대 용량 -->
<property name="maxInMemorySize" value="3145728"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
<bean id="uploadPath" class="java.lang.String">
<constructor-arg value="D:\99.JSP_SPRING\02.SPRING2\workspace_spring2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\DevProject\resources\upload"/>
</bean>
4.web.xml
<web-app version="3.1" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_3_1.xsd">
<!--
MultipartFilter 적용
- MultipartFilter의 역할은 들어온 요청이 multipart/form-data 유형의 요청인지를 확인하여
multipart 형태의 요청이면 MultipartResolve를 통해 multipart 요청을 확인합니다.
그리고 해당 요청이 적절한 요청이면 MultipartHttpServletRequest로 랩핑합니다.
- MultipartFilter의 기본 빈 이름은 'filterMultipartResolve' 이다.
-->
<filter>
<filter-name>MultipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MultipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
5.pom.xml
<!-- 파일 업로드를 처리하기 위한 라이브러리 의존 관계 정의 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 파일을 처리하기 위한 라이브러리 의존 관계 정의-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
의존 라이브러리 설정 되어있는지 확인