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);
%>
아파치의 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);
%>
댓글