Spring_fileupload 설정

인삼주·2023년 9월 4일
0

spring

목록 보기
16/22
  1. servlet-context.xml

StandardServletMultipartResolver 사용 시 설정,

	<!-- 서블릿 표준용 multipartResolver를 스프링 빈으로 정의 
		- StandardServletMultipartResolver 사용 시 설정
			> Servlet 3.0의 part를 이용한 MultipartFile 데이터 처리
	-->
<!-- 	<beans:bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> -->
<!-- 	</beans:bean> -->
  1. web.xml
	<!-- 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>
  • servlet 태그 안에 작성 > (StandardServletMultipartResolver 사용 시 설정)
  1. root-context.xml
	 <!-- 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">
  • 3.1로 설정되어있는지 확인
<!-- 
		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>
  • multipart 필터 적용되어있는지 확인

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>

의존 라이브러리 설정 되어있는지 확인

0개의 댓글