0. 의존 라이브러리 추가

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- 썸네일 라이브러리 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
<dependency>
<groupId>org.imgscalr</groupId>
<artifactId>imgscalr-lib</artifactId>
<version>4.2</version>
</dependency>
1. root-context.xml 설정

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 파일 업로드 용량 (10MB) -->
<property name="maxUploadSize" value="10485760" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<!-- 파일 업로드 디렉토리 설정 -->
<bean id="uploadPath" class="java.lang.String">
<constructor-arg value="c:\\upload" />
</bean>
2. web.xml 설정
2-1. multipart-config 추가
<servlet>의 안쪽에 <multipart-config>를 추가한다. 임시 파일 저장 경로, 업로드 파일의 최대 크기, 요청 데이터의 최대 크기, 메모리 임계값을 설정한다.

<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>
<multipart-config>
<location>c:\\upload</location> <!-- 업로드 경로 -->
<max-file-size>20971520</max-file-size> <!-- 업로드 최대 크기 1MB * 20 -->
<max-request-size>41943040</max-request-size> <!-- 한 번에 업로드 가능한 크기 40MB -->
<file-size-threshold>20971520</file-size-threshold> <!-- 할당 메모리 크기 20MB -->
</multipart-config>
</servlet>
2-2. MultipartFilter추가
* 주의!
MultipartFilter는 CharacterEncodingFilter의 다음에(하단에) 작성해야한다.
MultipartFilter가 위쪽에 있을 경우 인코딩 처리가 되지 않아 한글이 깨지는 현상이 발생한다.

<filter>
<display-name>springMultipartFilter</display-name>
<filter-name>springMultipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>springMultipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. context.xml 설정
WAS의 설정 파일이 담긴 Servers 폴더의 context.xml 파일을 다음과 같이 수정한다. 캐싱 문제를 해결하기 위한 설정이다.

<Context allowCasualMultipartParsing="true">
<Resources cachingAllowed="true" cacheMaxSize="100000"></Resources>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>
'Java > Spring Framework' 카테고리의 다른 글
| [Spring Framework] Date 타입 파라미터 (0) | 2023.02.06 |
|---|---|
| [Spring Framework] 클라이언트 파일 다운로드 구현 (0) | 2023.02.02 |
| [Spring Framework] @RequestBody와 @ResponseBody (0) | 2023.01.26 |
| [Spring Framework] @Mapping 어노테이션의 consumes와 procedures (0) | 2023.01.26 |
| [Spring Framework] @GetMapping과 @PostMapping (0) | 2023.01.26 |