http://blog.naver.com/minamjun11/110019178352
JSP에서 한글로 된 파일 업로드 / 다운로드 소스
출처 : http://okjsp.pe.kr/seq/98137
첨부 파일 : cos-05Nov2002.zip (압축 해제 후 lib 폴더의 cos.jar 사용)
JSP 파일 4개 ( up.html, up.jsp, delup.jsp, down.jsp )
---------
up.html
---------
<html>
<body>
<form action="up.jsp" enctype="multipart/form-data" method="post">
이름 : <input type="text" name="userName"><br>
파일 : <input type="file" name="upfile"><br>
<input type="submit" value="파일 업로드">
</form>
</body>
</html>
---------
up.jsp
---------
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="java.util.*" %>
<% request.setCharacterEncoding("euc-kr"); %>
<%
// C: 드라이브에 미리 test라는 폴더를 만들어 놓으세요
String savePath="c:/test/"; // 저장할 디렉토리 (절대경로)
int sizeLimit = 10 * 1024 * 1024 ; // 10메가까지 제한 넘어서면 예외발생
String fileName="";
String originalFileName = "";
try {
MultipartRequest multi=new MultipartRequest(request, savePath, sizeLimit,
"euc-kr", new DefaultFileRenamePolicy());
Enumeration formNames=multi.getFileNames(); // 폼의 이름 반환
String formName=(String)formNames.nextElement(); // 자료가 많을 경우엔 while 문을 사용
fileName=multi.getFilesystemName(formName); // 파일의 이름 얻기
originalFileName = multi.getOriginalFileName(formName); //원래 이름 가져오기
String userName ="";
if(fileName == null) { // 파일이 업로드 되지 않았을때
out.print("파일 업로드 되지 않았음");
} else { // 파일이 업로드 되었을때
userName = multi.getParameter("userName");
out.print("올린 사람 : " +userName+ "<br>");
out.print("file 태그 이름 : " + formName + "<br>");
out.print("저장된 파일명 : " + fileName + "<br>");
out.print("원래 파일명 : " + originalFileName + "<br>");
}//else 끝
} catch(Exception e) {
out.print("예외 상황 발생..! ");
}//catch
%>
<html>
<head>
<script language="javascript">
function delfile() {
document.myform.action='./delup.jsp'
document.myform.submit();
}
function down() {
document.myform.action='./down.jsp'
document.myform.submit();
}
</script>
</head>
<body>
<form name="myform" method=post >
<input type="text" value="<%=fileName%>" name="fileName">
<input type=button value='파일삭제' size=30 onClick="delfile()">
<input type=button value='파일다운' size=30 onClick="down()">
</form>
</body>
</html>
---------
delup.jsp
---------
<%@ page contentType="text/html;charset=euc-kr" %>
<%@ page import="java.io.*" %>
<%
String fileName = request.getParameter("fileName");
new File("c:/test/"+fileName).delete();
out.print("파일 삭제 완료!");
%>
---------
down.jsp
---------
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.io.*" %>
<%
String filename = new String((request.getParameter("fileName")).getBytes("8859_1"),"EUC_KR");
String filePath = "c:/test/"; // 절대경로.
InputStream in= null;
OutputStream os = null;
File file= null;
File viewFile = null;
boolean skip= false;
String client= "";
try {
String fname1 = "";
String fname2 = "";
String fname = "";
fname = filename;
fname1 = new String(fname.getBytes("8859_1"),"euc-kr");
try {
file = new File(filePath, fname);
viewFile = new File(filePath, fname1);
out.print("file : " + file);
in= new FileInputStream(file);
} catch(FileNotFoundException fe) {
skip= true;
}//catch
fname2 = new String(fname1.getBytes("euc-kr"),"8859_1");
response.reset();
client = request.getHeader("User-Agent");
response.setContentType("application/x-msdownload;");
response.setHeader("Content-Description", "JSP Generated Data");
if(!skip){
if(client.indexOf("MSIE 5.5") != -1){
response.setHeader("Content-Type", "doesn/matter; charset=euc-kr");
response.setHeader("Content-Disposition", "filename="+new String(fname.getBytes("euc-kr"),"8859_1"));
} else {
response.setHeader("Content-Type", "application/octet-stream; charset=euc-kr");
response.setHeader("Content-Disposition", "attachment; filename="+new String(fname.getBytes("euc-kr"),"8859_1"));
}//else
response.setHeader("Content-Transfer-Encoding", "binary;");
response.setHeader ("Content-Length", ""+file.length());
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");
os = response.getOutputStream();
byte b[] = new byte[4096];
int leng = 0;
while( (leng = in.read(b)) > 0 ){
os.write(b,0,leng);
}//while
} else{
out.println("<script language='javascript'>");
out.println("alert('File Downloading Fail !!');");
out.println("</script>");
return;
}//else
} catch(Exception e) {
System.out.println(e);
} finally {
if(in != null) in.close();
if(os != null) os.close();
}//finally
%>
실행 안될 시엔 쪽지 주세용~