<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%
try
{
String sFilePath = "D:/tomcat6ForGoodContents(8089)/webapps/"; //dev server
//String sFilePath = "C:/egovframework/kocca_workspace/goodcontents/src/main/webapp/"; //local
String sFileName = request.getParameter("filename");
String filename2 = sFileName.substring(sFileName.lastIndexOf("/")+1);
File file = new File (sFilePath+sFileName);
response.setContentType("application/octet-stream;");
response.setHeader("Content-Disposition","attachment; filename=" + filename2);
byte[] bytestream = new byte[(int)file.length()];
FileInputStream filestream = new FileInputStream(file);
int i = 0, j = 0;
while((i = filestream.read()) != -1) {
bytestream[j] = (byte)i;
j++;
}
filestream.close();
//요 두줄을 써 줘야
//getOutputStream() has already been called for this response 에러를 방지한다
//해당 에러는 jsp에서 outputStream을 사용할 때 servlet에서 생성된 writer 객체와
// 중복이 되어서 발생하는 에러다.
out.clear();
out = pageContext.pushBody();
OutputStream os = response.getOutputStream();
os.write(bytestream);
os.flush();
os.close();
}
catch(Exception e)
{
response.setContentType("text/html;charset=euc-kr");
out.println("<script language='javascript'>");
out.println("alert('not found.');");
out.println("</script>");
System.out.println(e);
}
%>
'Carpe Programming > jsp & spring & jstl' 카테고리의 다른 글
[spring] 초기 설정 (0) | 2012.01.27 |
---|---|
[jstl] foreach index, count (0) | 2011.12.28 |
[Spring] param 값 받기 (0) | 2011.08.29 |
[jstl] jstl 글자수 자르기 (0) | 2011.08.19 |
[jstl] jstl과 el로 목록 순번 표시하기 (0) | 2011.08.19 |