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문을 이용해 처리해준다.
•
파일 저장도 파일이 여러개니깐 반복문을 돌려줘야한다.