본문 바로가기
Category/Spring

[Spring] Apache 라이브러리를 활용해 파일 업로드& 유효성 검사하기

by developer__Y 2024. 1. 5.
Spring에서 파일업로드하기

 

1. pom.xml 디펜던시 추가 ( lombok, Jackson data-bind, Jackson dataformat, fileupload)

 

pom.xml 설정에 파일업로드를 위한 디펜던시 설정을 넣어준다.

파일 업로드 라이브러리는 아파치에서 제공하는 웹 페이지 파일 업로드인 Apache Commons fileupload를 사용한다.

pom.xml

2. web.xml <web-app> version 설정변경

 

스프링 레거시 프로젝트를 생성하면 web.xml 설정의 <web-app> 기본 버전은 2.5로 설정되어있으므로 3.1로 변경해준다.

 

 

그리고, 파일의 저장위치와 파일 크기등을 설정하기위해 <servlet> 태그내에 설정 파일을 적어준다.

 

 

 

3. View 설정

파일 업로드를 하기위한 JSP view 파일을 생성해준다.

<Form> 태그와 input (Type=file) 을 통해 파일 업로드를 할수있는 폼을 만들수있다.

 

 

4. Controller 설정

 

 

클라이언트가 업로드한 파일을 전송하면, 컨트롤러에서 Post 방식으로 받을때, MultipartFile 객체를 사용한다.

업로드한 파일이 여러개 일수있으므로 배열 형식으로 받아 for:each문을 돌리면,

multipartFile의 이름,크기등 정보를 얻을수있다.

File 객체를 하나 생성해서 생성자로 저장 위치와,원 파일명을 넣어주고,

transferTo() 메소드를 통해 파일을 해당 폴더에 저장시킬수 있다.

 

Ajax를 활용해 클라이언트단에서 파일 유효성 검사하기

 

 Jquery를 통해 클라이언트가 파일을 업로드하기전 파일의 확장자나, 크기에 대한 유효성을 체크를 하고

조건에 맞는 파일만 서버로 요청을 보내도록 할수있다.

 

파일의 확장자에 대한 검사는 정규식 표현을 사용하여 복잡한 로직을 만들지않고도 간편하게 체크할수있다.

 

jquery를 사용하여 파일 유효성 검사

 

var regex = new RegExp("(.*?)\.(exe | sh | js )$) : 파일 확장자가 exe, sh, js 로 끝나는 파일을 검사하기위한 정규 표현식.

var maxSize = 5242880 : 5242880 = 5*1024*1024 = 5 MB

 

자바스크립트에서 checkExtension() 함수를 통해 파일 확장자와 파일 크기가 조건에 맞지않으면 false를 반환한다.

이후, for문에서 checkExtension() 함수를 사용해 유효성검사 결과 true 인것만 append한다.