MultipartRequest 를 이용하여 파일 업로드를 구현한다.
MultipartRequest 를 이용하기 위해서는 http://www.servlets.com/cos/index.html 에서
Class Multipart Request 를 클릭해 다운 받는다. (파일첨부)
다운 받은 파일의 압축을 풀고 lib폴더 안에 cos.jar 를 톰캣 설치 폴더의 lib 폴더 안에 추가한다.
그리고 현재 작업중인 프로그램의 WebContent/Web_INF/lib 아래에도 추가한다.
그리고 프로젝터를 새로 고침하면 자동으로 적용이 된다.
fileUpload.jsp
------------------------------------------------------------------------------
<%@ java.util.*"%>
<%@ page import="com.oreilly.servlet.MultipartRequest"
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
String path="c:/file";
int fileSize= 5 * 1024 * 1024 ;
String message = null;
try{
MultipartRequest multi=new MultipartRequest(request, path, fileSize);
Enumeration formNames=multi.getFileNames();
String formName=(String)formNames.nextElement();
String fileName=multi.getFilesystemName(formName);
if(fileName != null) {
message = fileName;
} else {
message = "fail to upload file";
}
} catch(Exception e) {
message = "fail to upload file";
e.printStackTrace();
}
response.sendRedirect("mainForm.jsp?value="+message);
------------------------------------------------------------------------------
mainForm.jsp
------------------------------------------------------------------------------
<form name="fileform" action="fileUpload.jsp" enctype="multipart/form-data" method="post">
<table border="0" cellpadding="0" cellspacing="10">
<tr>
<td nowrap class="FTBHTD2"> 파일 업로드 </td>
<td class="LTBMTR1">
<input type="file" name="upfile">
<input type="submit" value="upload"></td>
</tr>
<tr><td><% if(fileName == null) { %> * 5MB 미만의 파일만 첨부 가능합니다.
<% } else { %> "<%=fileName %>" 가 업로드 되었습니다
<input type="button" value="태그 업데이트 하기"
onclick="formSubmitToURL(fileform, 'updateGroupTag.jsp?filename=<%=fileName%>')">
<% } %></td> </tr>
------------------------------------------------------------------------------
mainForm.jsp 에서 input type="file"을 선언하고 파일을 선택한 뒤에 "upload" submit 버튼을 누르면 fileUpload.jsp 파일을 실행한다. String path 는 업로드 된 파일이 저장될 절대 경로를 적으면 된다.
int fileSize 는 업로드 파일 최대 크기이며 위에는 5MB 까지 제한을 두고 있다. MultipartRequest 클래스를 이용하여 객체를 생성하여 파일 업로드를 구현한다.
이때 MultipartRequest multi=new MultipartRequest(request, path, fileSize); 여기에서 MultipartRequest multi=new MultipartRequest(request, path, fileSize,new DefaultFileRenamePolicy()) 로 네번째 파라미터를 추가할 경우 파일 업로드가 될때 같은 파일 이름이 있을 경우 file.txt file1.txt file2.txt 로 변경되어 업로드 된다.
MultipartRequest multi=new MultipartRequest(request, path, fileSize,"euc-kr", new DefaultFileRenamePolicy()) 이렇게 "euc-kr" 을 추가할 경우 한글 파일 이름이 깨지지 않는다.
'Java+Jsp' 카테고리의 다른 글
아파치 톰캣 연동 (0) | 2010.04.13 |
---|---|
jsp ftp (Commons net) (0) | 2010.02.18 |
java 디컴파일러 JAD, JADClipse (0) | 2009.11.13 |
xml 읽어오기 (0) | 2009.11.02 |
엑셀 저장하기 (0) | 2009.10.29 |