java, spring

[Spring] 파일 업로드 설정하기 (xml방식, Java방식)

isaac.kim 2021. 8. 22. 17:11
728x90
반응형

[Spring] 파일 업로드 설정하기 (xml방식, Java방식)

 

파일을 서버에 전송하는 방식은 크게 <form> 태그를 이용해 업로드하는 방식, Ajax를 이용하는 방식으로 나눌 수 있습니다.

 

■ <form> 태그는 브라우저의 제한이 없는 경우에 사용합니다.

- 일반적인 페이지 이동과 동시에 첨부파일을 업로드하는 방식

- <iframe>을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식

 

■ Ajax는 첨부파일을 별도로 처리하는 경우 사용합니다.

- <input type="file">을 이용하고 Ajax로 처리하는 방식

- <HTML5>의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식

 

서버에서 주의해야 하는 점은 어떤 종류의 라이브러리나 API 등을 활용할 것인지에 대한 부분입니다.

 

서버에서 첨부파일을 처리하기 위해 다음과 같은 API들을 활용합니다.

 

# cos.jar : 2002년 이후 개발이 종료되어 권장하진 않음

# commons-fileupload : 가장 일반적으로 많이 활용되고, 서블릿 스펙 3.0 이전에도 사용 가능.

# 서블릿 3.0 이상 - 3.0 이상부턴 자체적인 파일 업로드 처리기 API 상에서 지원

 

이 글에서는 서블릿 3.0 이상에서 사용하고 있는 버전으로 구성할 예정입니다.

 

첨부파일은 실제 서버 폴더에 저장하기 위해 C드라이브 밑에 파일을 구성합니다.

C:\storage\temp

스프링 첨부파일을 위한 설정

 

pom.xml 수정하기

 

스프링 버전 수정

서블릿 3.0 이상을 활용하기 위해 서블릿 버전 수정 (2.5 -> 3.1)

lombok 추가

 

web.xml을 이용하는 경우의 첨부파일 설정

web.xml 파일의 최상단을 보면 다음과 같이 작성되어 있습니다. 이를 수정합니다.

수정 전
수정 후

web.xml의 <servlet> 태그 내에는 <multipart-config> 태그를 추가합니다.

<multipart-config>의 설정은

특정 사이즈의 메모리 사용<file-size-threshold>

업로드되는 파일을 저장할 공간<location>

업로드되는 파일의 최대 크기<max-file-size>

한번에 올릴 수 있는 최대 크기<max-request-size>를 지정할 수 있습니다.

 

web.xml의 설정은 WAS(Tomcat) 자체의 설정일 뿐이고, 스프링에서 업로드 처리는 MultipartResolver라는 타입 객체를 빈으로 등록해야만 가능합니다. Web과 관련된 설정이므로 servlet-context.xml을 이용해서 설정합니다.

 

servlet-context.xml의 일부

첨부파일을 처리하는 빈을 설정할 때 id는 'multipartResolver'라는 이름으로 지정된 이름을 사용합니다.

 


Java 설정을 이용하는 경우

이전 참고 글

2021.05.05 - [Spring] - 스프링 웹 프로젝트를 Java Configuration 으로 설정하기

2021.05.14 - [Spring] - [Spring] 커넥션 풀(Connection Pool) HikariCP, Java로 설정하기

2021.06.18 - [Spring] - [Spring framework] 스프링 MVC 프로젝트 Java로 구성하기

2021.05.29 - [Spring] - [Spring Framework] 스프링 파일 업로드 Java config

 

Java 설정을 이용하는 경우는 먼저 pom.xml에서 web.xml이 없어도 문제가 없도록 <plugin>을 추가합니다.

com.project.config 패키지 아래 Java 설정 클래스들을 추가합니다.

 

WebConfig 수정

web.xml을 대신하는 WebConfig 클래스 파일에 파일 업로드를 위한 MultipartConfig 설정을 추가합니다.

 

xml에서 <multipart-config> 태그는 WebConfig 클래스에서 javax.servlet.MultipartConfigElement라는 클래스를 이용합니다. 

 

ServletConfig 수정

servlet-context.xml을 대신하는 ServletConfig 클래스 파일은 MutipartResolver를 스프링 빈으로 추가합니다.


다음 글에 파일 업로드 설정을 한 뒤 파일을 업로드 하는 과정을 담겠습니다.

 

'코드로 배우는 웹 스프링 프로젝트'로 공부中

728x90
반응형