본문 바로가기
프로그래밍/html & jsp

파일 다운로드 를 해보자 - jsp, 스트러츠 , 게시판 파일다운로드

by Super User 2009. 6. 10.

**  파일업로드후에  다운로드를 하려면 zip 파일 외에는 바로 열기가 된다 그래서 zip  파일처럼 새로운 창이 열려서 저장하겠냐고 묻고 싶을때는 다음과 같은 소스를 넣어줘야한다.  jsp 에서나  action 클래스에서 처리해주면 된다 !

 

 

 

** 파일 다운받기 기능이 있는 .jsp 

<a href="/b/notice/noticefile.jsp?fileName=<%=nvo.getFilename() %>">파일다운받기</a>

 

fileName 을 파라미터로 넘겨줘야한다

 

 

 

 

 

**  다운로드 .jsp (noticefile.jsp)

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <%@ page import="java.io.*" %>
<%
String filename = new String((request.getParameter("fileName")).getBytes ("8859_1"),"EUC_KR");         //fileName 을 파라미터로 받아온다
String  filePath = "D:/1java_test/b/webapp/file"; // 절대경로. 업로드한 파일이 저장되있는 위치
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
%>


   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>파일다운로드 </title>
</head>
<body>

</body>
</html>

'프로그래밍 > html & jsp' 카테고리의 다른 글

window.open 옵션  (0) 2009.06.10
글 자르기 또한가지의 팁 overflow:hidden;text-  (0) 2009.06.10
iframe  (0) 2009.06.10
jqgrid에서 셀에 글자색 바꾸기  (0) 2009.06.10
게시판 로직  (0) 2009.06.10