** 파일업로드후에 다운로드를 하려면 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 |