스프링을 이용한 파일업로드 프로젝트
=> https://github.com/ksh901016/file-upload
웹에서 파일 업로드는 일반적으로 "multipart/form-data"라는 방식으로 데이터를 전송하며,
스프링MVC에서는 multipart형식으로 전송된 데이터를 핸들링할 수 있는 기능을 지원해준다.
=> 스프링 MultipartResolver 사용
우선 사용할, multipartResolver를 빈으로 등록해 준다.(dispatcher-context.xml에 등록)
1 2 3 | <beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <beans:property name="maxUploadSize" value="10485760"></beans:property> </beans:bean> | cs |
스프링이 기본으로 제공하는 MultipartResolver는 CommonsMultipartResolver 이다.
CommonsMultipartResolver는 CommonsFileUpload API를 이용하여 Multipart를 처리해준다.
bean의 id는 꼭 multipartResolver로 해줘야한다.
DispatcherServlet은 이름이 "multipartResolver"인 빈을 사용하기 때문에, 이름이 다를 경우 정상동작을 하지 않는다.
CommonsMultipartResolver 프로퍼티
프로퍼티 |
타입 |
설명 |
maxUploadSize |
long |
최대 업로드 가능한 바이트 크기 |
maxInMemorySize |
int |
임시 파일을 생성하기 전에 메모리에 보관할 수 있는 최대 바이트 크기(default 10240 byte) |
defaultEncoding |
String |
요청을 파싱할 때 사용할 캐릭터 인코딩 |
파일전송에 필요한 html을 작성
1 2 3 4 5 6 | <body> <form id="form1" action="uploadForm" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit"> </form> </body> | cs |
기본적으로 파일을 업로드할 때 사용하는 코드
enctype은 전송되는 데이터 형식을 설정하는 속성으로 multipart/form-data로 지정 => 바이너리타입
전송한 파일을 핸들링하는 Java 코드
1 2 3 4 5 6 | @RequestMapping(value="/uploadForm", method = RequestMethod.POST) public void uploadForm(MultipartFile file, Model model) throws IOException { logger.info("fileName : " + file.getOriginalFilename()); logger.info("fileSize : " + file.getSize()); logger.info("contentType : " + file.getContentType()); } | cs |
MultipartFile을 파라미터로 받으면 html에서 전송한 파일을 받아서 핸들링할 수 있게 된다.
MultipartFile 인터페이스
org.springframework.web.MultipartFile 인터페이스는 파일 데이터를 표현하기 위한 용도로 사용된다.
주요메소드
메소드 |
설명 |
getName() |
파라미터 이름을 구한다. |
getOriginalFilename() |
업로드한 파일의 실제이름을 구한다. |
isEmpty() |
존재여부를 확인한다(존재하지 않는 경우 true) |
getSize() |
업로드한 파일의 크기를 구한다. |
getBytes() |
업로드한 파일 데이터를 구한다.(byte[]로 리턴) |
getInputStream() |
InputStream을 구한다 |
transferTo(File dest) |
업로드 한 파일 데이터를 지정한 파일에 저장한다. |
'그 외 ... (정리해야함) > 프로젝트' 카테고리의 다른 글
[Rest API] 프로젝트 설정_1(JavaConfig, DB) (0) | 2019.04.18 |
---|---|
[Rest API] 프로젝트 준비(web.xml, pom.xml 설정) (0) | 2019.04.18 |
[프로젝트] 도서 정보를 처리하는 REST API를 만들어보자 (0) | 2019.03.30 |
[프로젝트] JAVA 멀티스레드 채팅프로그램 (0) | 2019.03.04 |