본문 바로가기
Spring

[스프링MVC] Form타입 Fileupload 방법 (commons-fileupload)

by 코플+ 2023. 5. 24.
> 파일 업로드 폼 방식 요청 처리를 위한 의존 라이브러리 추가
 > pom.xml 내, commons-fileupload, commons-io 라이브러리리 의존관계 등록
 > web.xml에 모든 경로에 대한 MultipartFilter를 등록
 
 ## 위 설정을 진행하였는데도 에러가 나는 경우 조치방법
 > multi-part 에러가 발생하거나 null에러가 발생거하거나  multipartFile 에러가 발생할때 설정한다.
 > server > context.xml 내에서 Context 태그 내 옵션 추가
  > allowCasualMultipartParsing="true" path="/"
  > local 환경에서는 셋팅이 가능하다.

 

1. pom.xml에서 commons-fileupload, io Dependency 설정

		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.2</version>
		</dependency>

 

2. web.xml에서 Filter 설정

	<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>

 

3. Parameter에서 MultipartFile 객체로 받아오기 (단일파일)

	@RequestMapping(value = "/registerFile01", method= RequestMethod.POST)
	public String registerFile01(MultipartFile picture) {
		log.info("register01File() 실행...!");
		log.info("originalName : " + picture.getOriginalFilename());
		log.info("size : " + picture.getSize());
		log.info("contentType : " + picture.getContentType());
		return "success";
	}

 

4. 복수파일 받아오기 ( 배열[] 이용, ArrayList는 지원하지않은다)

복수의 파일을 가져올때 스프링프레임워크에서 form태그의 값들을 파라미터상에서 arrayList로 불러올수 없다. 배열을 이용하거나 ArrayList를 사용하려면 VO를 생성하고 vo에서 List를 만들면 사용 가능해진다. 
	@RequestMapping(value = "/registerFile08", method = RequestMethod.POST)
	public String registerFile08(MultipartFile[] pictureList) {
		log.info("registerFile08() 실행...!");
		log.info("pictureList.legth : " + pictureList.length);
		
		for(MultipartFile picture : pictureList) {
			log.info("originalName : " + picture.getOriginalFilename());
			log.info("size : " + picture.getSize());
			log.info("contentType : " + picture.getContentType());
		}
		return "success";
		
	}

 

 

 

댓글