본문 바로가기
개발/JAVA

MultipartHttpServletRequest 다중파일 업로드

by ㅣ푸른하늘ㅣ 2018. 7. 23.
반응형

파일 업로드를 위해 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로-다중-파일-업로드-구현 [황금너구리 블로그]

반응형