본문 바로가기
Web Program/Java Lecture

JSP에서 한글로 된 파일 업로드 / 다운로드 소스

by 현이빈이 2008. 8. 13.
반응형
Design Web History | minamjun11
원문 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
%>

 

 

실행 안될 시엔 쪽지 주세용~

반응형