본문 바로가기
SPRING/웹 파일 업로드

[ SPRING ] common 라이브러리 사용한 file upload (WEB)

by 정윤재 2012. 1. 10.

spring3 에서 파일 업로드를 하기 위해서는

아파치의 commons 라이브러리가 필요하다.

http://projects.apache.org/indexes/quick.html

경로로 들어가서 fileupload  관련 라이브러리인

commons-io-version.jar
commons-fileupload-version.jar

를 다운 받아야 한다.

라이브러리 추가 후

1. dispatcher-servlet.xml 에

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

부분 추가

2. form 이 보일 jsp 페이지 작성 (FileUploadTest.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="/spring_sample/js/jquery-1.7.1.js" type="text/javascript"></script>
<script src="/spring_sample/js/jquery.alerts.js" type="text/javascript"></script>
<link href="/spring_sample/css/jquery.alerts.css" rel="stylesheet" type="text/css" media="screen" />
<script>
 function sub(){
  $("form[name=UploadFrm]").submit(); 
 }
</script>
</head>
<body>
 <form name="UploadFrm" enctype="multipart/form-data" action="/spring_sample/user/fileupload" method="post">
  <input type="file" name="file1">
  <input type="file" name="file2">
  <input type="button" onclick="sub();" value="전송">
 </form>
</body>
</html>


3. 파일 들어갈 DTO 작성

import org.springframework.web.multipart.MultipartFile;
public class FileUploadDTO {
 private MultipartFile file1;
 private MultipartFile file2;
 public MultipartFile getFile1() {
  return file1;
 }
 public void setFile1(MultipartFile file1) {
  this.file1 = file1;
 }
 public MultipartFile getFile2() {
  return file2;
 }
 public void setFile2(MultipartFile file2) {
  this.file2 = file2;
 }
 
}



4. Controller 에서 file 제어

 @RequestMapping(value = "/fileupload", method = RequestMethod.POST)
 public String getFileUpload( ModelMap model,HttpServletRequest request,FileUploadDTO fileUploadDTO) {
logger.debug("***********enter controller file upload ***********");
  HttpSession session  = request.getSession();
  String root = session.getServletContext().getRealPath("/");
  logger.debug("root::"+root);
  String path = root+"/fileUpload";
  //업로드 될 디렉토리
  
  File dir    = new File(path);
  
  if(!dir.exists()){
   //업로드 디렉 토리가 없을 경우 만듦
   dir.mkdirs();
  }
  
  File file1    =  null;
  File file2    =  null;
  
  try{
   if(!fileUploadDTO.getFile1().isEmpty()){
    
    
    String file1Name = fileUploadDTO.getFile1().getOriginalFilename();
    file1  =  new File(path+"/"+file1Name);
    logger.debug("file1_name::"+fileUploadDTO.getFile1().getName());
    fileUploadDTO.getFile1().transferTo(file1);
    
   }
   if(!fileUploadDTO.getFile2().isEmpty()){
    String file2Name = fileUploadDTO.getFile2().getOriginalFilename();
    file2  =  new File(path+"/"+file2Name);
    logger.debug("file1_name::"+fileUploadDTO.getFile2().getName());
    fileUploadDTO.getFile2().transferTo(file2);
   }
  
  }catch(Exception e){
   e.printStackTrace();
  }
  String file1_info  =  file1.getName();
  String file2_info  =  file2.getName();
  
  model.addAttribute("file1_info",file1_info);
  model.addAttribute("file2_info",file2_info);
//업로드 파일 이름을 result 페이지로 넘겨서 정상 업로드 되었는지 확인
 return "test/FileUploadResult";
  
 } 

5. 결과가 전달 될 jsp 파일 작성(FileUploadResult.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*" %>
<%
String file1  = (String)request.getAttribute("file1_info");
String file2  = (String)request.getAttribute("file2_info");
out.println(file1);
out.println(file2);
%>   





댓글