파일 업로드를 위해 Form의 인코딩타입을 multipart/form-data로 변경해줍니다.
이후 업로드 할 파일을 선택할 수 있도록 file 타입의 input 태그를 작성해줍니다.
<form method="post" action="YOUR_URL" enctype="multipart/form-data">
<input type="file" name="file1"/>
<input type="file" name="file2"/>
<input type="submit"/>
</form>
Spring에서 Multipart 파일업로드를 사용하기 위한 Commons fileupload(http://jakarta.apache.org/commons/fileupload)를 지원하고 있습니다.
context파일에 multipartResolver를 bean에 등록해줍니다.
multipartResolver는 maxUploadSize(최대 크기), maxInMemorySize(임시 파일 생성 전 메모리 보관 최대 크기), defaultEncoding(인코딩 타입) 세가지의 속성을 지원하고 있습니다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
</bean>
이후 컨트롤러에서 요청을 받아 다음과 같이 MultipartHttpServletRequest 객체를 사용할 수 있습니다.
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
java.util.Iterator<String> fileNames = multipartRequest.getFileNames();
while(fileNames.hasNext())
{
String fileName = fileNames.next();
MultipartFile mFile = multipartRequest.getFile(fileName);
File file = new File("파일을저장할경로"+"파일이름");
if(mFile.getSize()!=0) //File Null Check
{
if(! file.exists()) //경로상에 파일이 존재하지 않을 경우
{
if(file.getParentFile().mkdirs()) //경로에 해당하는 디렉토리들을 생성
{
try {
file.createNewFile(); //이후 파일 생성
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
try {
mFile.transferTo(file); //임시로 저장된 multipartFile을 실제 파일로 전송
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
출처: http://goldenraccoon.tistory.com/entry/MultpartHttpServletRequest로-다중-파일-업로드-구현 [황금너구리 블로그]
'개발 > JAVA' 카테고리의 다른 글
자바와 MFC 소켓 프로그래밍 참고하세요 (0) | 2018.07.24 |
---|---|
Image Auto-Tagging API (0) | 2018.07.24 |
Java8#02. 함수형 인터페이스(Functional Interface) (0) | 2018.07.20 |
Java8#01. 람다 표현식(Lambda Expression) (0) | 2018.07.20 |
로그인 중복체크 (0) | 2018.07.11 |