Spring에서 파일을 포함한 Form 을 전송하고 업로드 하기
파일 업로드 라이브러리 출처 : http://guraguna.tistory.com/11
아래는 원본에 있는 내용 그대로임.
------------------------------------------------------------------------------------
1. 먼저 form 태그에 다음의 프로퍼티를 추가한다.
enctype="multipart/form-data"
인코딩 타입이 Multipart 인 경우 파라미터나 업로드한 파일을 구할려면 전송 데이터를 알맞게 처리해 주어야 한다. 스프링은 Multipart 지원 기능을 제공하고 있기 때문에, 이 기능을 이용하면 추가적인 처리 없이 Multipart 형식으로 전송된 파라미터와 파일 정보를 쉽게 구할 수 있다.
2. MultipartResolver 설정
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
Multipart 지원 기능을 사용하려면 먼저 MultipartResolver를 스프링 설정파일에 등록해 주어야 한다. MultipartResolever 는 Multipart 형식으로 데이터가 전송된 경우, 해당 데이터를 스프링 MVC 에서 사용할 수 있도록 변환해준다.
라이브러리에 다음을 추가한다.
commons-fileupload / commons-fileupload
commons-io / commons-io <- 1.4 version
2.1. MultipartResolver의 Property
Property Type Descript maxUploadSize long 최대 업로드 가능한 바이트 크기. -1 은 체한이 없음을 의미한다, Default 는 -1 maxInMemorySize int 디스크에 임시 파일을 생성하기 전에 메모리에 보관할 수 있는 최대 바이트 크기, 기본값은 10240 바이트이다. defaultEncoding String 요청을 파싱할 때 사용할 캐릭터 인코딩. 지정하지 않을 경우 HttpServletRequest.setCharacterEncoding() 메서드로 지정한 캐릭터 셋이 사용된다. 아무 값도 없을 경우 ISO-8859-1을 사용한다.
3. Controller 에서 데이터 받아오기.
컨트롤러의 파라미터에 값을 받아 넣을 때 다음의 소스를 입력한다.
@RequestParam("[inputName]") MultipartFile [paramName]
다음은 MultipartFile 인터페이스가 제공하는 주요 메서드 이다.
Method Descript String getName() 파라미터의 이름을 구한다. String getOriginalFilename() 업로드 한 파일의 이름을 구한다. boolean isEmpty() 업로드 한 파일이 존재하지 않는 경우 true를 리턴한다. long getSize() 업로드 한 파일의 크기를 구한다. byte[] getBytes() throws IOException 업로드 한 파일의 데이터를 구한다. InputStream getInputStream() throws IOException 업로드 한 파일 데이터를 읽어오는 InputStream을 구한다,
InputStream의 사용이 끝나면 알맞게 종료해 주어야 한다.
void transferTo(File dest) throws IOException 업로드 한 파일 데이터를 지정한 파일에 저장한다.
if (multipartFile.isEmpty)) {
//업로드 한 파일데이터를 구하는 가장 단순한 방법은 MultipartFile.getBytes() 메서드를 이용하는 것이다. 바이트 배열을 구한 뒤에 파일이나 DB 등에 저장하면 된다.
byte[] fileData = multipartFile.getByte();
...
}
if (multipartFile.isEmpty)) {
//업로드 한 파일 데이터를 특정 파일로 저장하고 싶다면 MultipartFile.transferTo() 메서드를 사용하는 것이 편리하다.
File file = new File(fileName);
multipartFile.transferto(file);
...
}
'Server' 카테고리의 다른 글
Ubuntu MySQL 원격 접속 허용 (0) | 2015.11.03 |
---|---|
php, mysql 과 안드로이드 연동시 한글 깨지는 이슈 (0) | 2015.11.03 |
이클립스 톰캣서버, jsp 세팅, jquery (0) | 2015.05.08 |
spring MVC 예제 (0) | 2014.08.18 |
이클립스에서 Spring MVC, Maven, Tomcat 기본환경 구축하기 (STS 초간단) (4) | 2012.03.13 |