'WEB'에 해당되는 글 66건
- 2008.12.13 [WEB] MultipartRequest를 이용한 파일 업로드 1
2008. 12. 13. 14:41
[WEB] MultipartRequest를 이용한 파일 업로드
2008. 12. 13. 14:41 in WEB
//---------------------------------------------------------------------------------------
<!-- upload_cos.html -->
<html>
<head>
<title>MultipartRequest를 이용한 파일 업로드</title>
<Script language="javascript">
function fnCheck(){
if(document.formUpload.upfile.value == ""){
alert("업로드할 파일을 선택하세요");
document.formUpload.upfile.focus();
return false;
} else if(document.formUpload.division.value == ""){
alert("종류를 선택하세요");
document.formUpload.division.focus();
return false;
}
return true;
}
</Script>
</head>
<body>
<form name="formUpload" method="post" action="upload_cos_ok.jsp" enctype="multipart/form-data" onSubmit="return fnCheck()">
<center>
<h2> MultipartRequest를 이용한 파일 업로드 </h2>
<table border="1" width="500" cellpadding="5">
<tr>
<td align="right"> 파일 </td>
<td><input type="file" name="upfile" onkeydown="event.returnValue=false;"></td>
</tr>
<tr>
<td align="right"> 종류 </td>
<td>
<select name="division">
<option value="">-- 선택 --</option>
<option value="game">게임</option>
<option value="util">유틸리티</option>
<option value="doc">문서자료</option>
<option value="movie">동영상</option>
<option value="music">음악</option>
<option value="etc">기타</option>
</td>
</tr>
<tr>
<td align="right"> 설명 </td>
<td><textarea name="contents" rows="5" cols="55"></textarea></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="업로드">
<input type="reset" value="다시작성">
</td>
</tr>
</table>
</form>
</body>
</html>
//--------------------------------------------------------------------------------------------
<%-- upload_cos_ok.jsp --%>
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.io.File,
java.io.IOException,
com.oreilly.servlet.MultipartRequest,
com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<html>
<head>
<title>MultipartRequest를 이용한 파일 업로드</title>
</head>
<body>
<%
// request.setCharacterEncoding("euc-kr");
String savePath = application.getRealPath("/") + "upload";
int sizeLimit = 1 * 1024 * 1024 ; // 1 메가까지 제한한다. 넘어서면 IOException 발생
try{
MultipartRequest multi=new MultipartRequest(request, savePath, sizeLimit, "euc-kr", new DefaultFileRenamePolicy());
// 한글이 깨질 경우 아래와 같이 "euc-kr" 파라미터를 제거한다. 주로 Linux 환경일 경우에 많이 발생한다.
// MultipartRequest multi=new MultipartRequest(request, savePath, sizeLimit, new DefaultFileRenamePolicy());
String fileName=multi.getFilesystemName("upfile"); // 파일의 이름얻기
String originalFileName = multi.getOriginalFileName("upfile"); // 중복처리 이전의 파일 이름 얻기
// 파일이 업로드 되지 않았을때
if(fileName == null) {
%>
<h2>파일이 업로드 되지 않았습니다.</h2>
<BR>
<a href="javascript:history.back()">다시 업로드 하기</a>
<%
// 파일이 업로드 되었을때의 처리
}
else {
// 생성자에서 "euc-kr" 파라미터를 제거했을 경우 아래와 같이 인코딩이 필요하다
// fileName = new String(fileName.getBytes("8859_1"),"euc-kr"); // 한글 출력을 위한 인코딩
// originalFileName = new String(originalFileName.getBytes("8859_1"),"euc-kr");
File file1 = multi.getFile("upfile"); // 파일 객체 얻기
String division = multi.getParameter("division");
String contents = multi.getParameter("contents");
// 생성자에서 "euc-kr"을 제거한 경우
// contents = new String(contens.getBytes("8859_1"),"euc-kr");
%>
<h2>파일 업로드가 정상적으로 완료 되었습니다!! </h2>
저장된 파일 이름 : <%=fileName%> <BR>
변경되기 이전의 파일 이름 : <%=originalFileName%> <BR>
종류 : <%=getDivisionName(division)%> <BR>
설명 : <%=contents%> <BR>
사이즈 : <%=file1.length()%> Byte <BR>
ContentType : <%=multi.getContentType("upfile")%> <BR>
<%
}
}
catch(IOException e) {
out.print("<h2> IOException 이 발생했습니다 </h2> <BR><pre>" + e.getMessage() + "</pre>");
}
%>
</body>
</html>
<%!
public String getDivisionName(String division) {
String divisionName = "";
try{
if ( division.equals("game") ) {
divisionName = "game";
} else if ( division.equals("util") ) {
divisionName = "util";
} else if ( division.equals("doc") ) {
divisionName = "document";
} else if ( division.equals("movie") ) {
divisionName = "movie";
} else if ( division.equals("music") ) {
divisionName = "music";
} else if ( division.equals("etc") ) {
divisionName = "etc";
}
} catch (Exception e){
divisionName = "기타";
}
return divisionName;
}
%>