1. pom.xml에 모듈 추가


<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.1</version>

</dependency>


※ 스프링에서 기본으로 제공되는 home.jsp에서 테스트를 해본다.




2. servlet-context.xml에 객체 생성


<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<beans:property name="defaultEncoding" value="UTF-8" />

<beans:property name="maxUploadSize" value="52428800" />

</beans:bean>



3. home.jsp에 업로드 폼 추가


<form action="fileUpload" enctype="multipart/form-data" method="post">

<input type="file" name="file1" />

<input type="file" name="file2" />

<input type="submit" value="파일첨부" />

</form>




4. HomeController.java 컨트롤러에 설정 추가


wepapp 아래에 upload 폴더를 만들어야 한다.


@RequestMapping(value="/fileUpload", method=RequestMethod.POST) 

public ModelAndView fileUpload(MultipartHttpServletRequest mRequest) {

boolean isSuccess = false;

ModelAndView mav = new ModelAndView();

String uploadPath = "c:/workspaces/spring_sts/chap12_multi_fileUpload/src/main/webapp/upload/";

// wepapp 아래에 upload 폴더를 만들어야 한다.

File dir = new File(uploadPath);

if(!dir.isDirectory()) {

dir.mkdirs(); // 위의 경로에 빠진 폴더가 있으면 자동으로 폴더를 생성해주는 메서드

}

Iterator<String> iter = mRequest.getFileNames();

while(iter.hasNext()) {

String uploadFileName = iter.next();

MultipartFile mFile = mRequest.getFile(uploadFileName);

String originalFileName = mFile.getOriginalFilename();

String saveFileName = originalFileName;

if(saveFileName != null && !saveFileName.equals(" ")) {

if(new File(uploadFileName+saveFileName).exists()) {

saveFileName = saveFileName+"_"+System.currentTimeMillis();

// 업로드된 파일 저장시 시간을 파일명 뒤에 붙여주는 방식

}

try {

mFile.transferTo(new File(uploadPath+saveFileName));  // 첨부된 파일을지정한 경로에 저장해주는 메서드

isSuccess = true;

} catch (IllegalStateException e) {

e.printStackTrace();

isSuccess = false;

} catch (IOException e) {

e.printStackTrace();

isSuccess = false;

}

}

}

if(isSuccess) {

mav.addObject("result", "SUCCESS");

} else {

mav.addObject("result", "FAIL");

}

mav.setViewName("fileUpload_result"); // 결과 확인을 위한 jsp

return null;

}




5. fileUpload_result.jsp


결과 확인을 위한 jsp 


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>파일 업로드 결과</title>

</head>

<body>

<h1>${result}</h1>

</body>

</html>




Posted by netyhobby
,