DS's『 행복합시다 』

Carpe Programming/jsp & spring & jstl

[jsp] 파일 다운로드

nolite 2011. 9. 23. 14:34


<%@ 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);
    }
%>

728x90

'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