[Spring]File-Upload

내용
single-fileUpload
multi-fileUpload
filter
commons io
commons file upload
진행일시
2021/03/28
속성

1. FileUpload는 single-file-upload와 multi-file-upload가 있다

**FileUpload를 하기위해서는 commons-io와 commons-fileupload lib리가 필요하다 . mavenRepository에가서 두개의 파일을 검색하고 maven쪽을 복사하여 pom.xml에 추가해준다.

1. single-file-upload

main.jsp

encType을 설정해줘야 파일을 전송할수 있다. 기억하자

ㅁ servlet-context.xml

servlet-context.xml에도 bean설정을해줘야한다.
파일업로드를 위한 bean설정이고 아까받은 commons 라이브러리를 자동적으로 사용할 수 있도록 스프링 프레임워크에서 제공되고있는 multipartResolver에 해당하는 내용들을 해석할 수 있는 클래스를 써줘야한다.

ㅁ fileUploadController

@RequestParam MultipartFile singlefile은 @RequestParam으로 singlefIle에 parameter로 가져와서 multipartFileType에다가 넣어준다
encoding은 web.xml에서 설정해줘여한다. 그 이유는 file을전송할때 form데이터와 감싸져서 한번에 전송되어서이다.
encoding을 해결하기위해서 spring에서 제공하는 Filter를 써야한다.
파일을 저장할 경로를 작성해야한다. request.getSession().getServletContext까지는 appweb에 주소이고 그 하위에 getRealPath("resources")를 작성해주어 어디위치에 파일을 저장할건지 설정해준다.
그리고 실제 파일을 저장할경로를 설정해준다.
실제저장할경로에 file이 없으면 filePath라는 저경로를 file타입의 객체로 만들어줘야한다.
파일이름은 그대로 저장하는건 위험하니깐 substring과 lastIndexOf를 이용해 .뒤에 있는 파일형태만 추출하고 UUID를 이용해 랜덤이름을생성 후 거기다가 방금 추출한 파일형태를 붙여준다.
ㅁ web.xml
encoding설정

2.multi-file-upload

멀티파일업로드는 singFileUpload와 유사하다 하지만 파일을 여러개 저장하니깐 List형태로 파일을 설정해야한다.
파일이 여러개인만큼 파일명도 파일 올린수 만큼 변경해줘야해서 for문을 이용해 처리해준다.
파일 저장도 파일이 여러개니깐 반복문을 돌려줘야한다.