본문 바로가기

Programming/과거포스팅

HTML 다운로드 태그 + jsp 스트림출력

HTML 의 a링크로 다운로드파일을 설정하면 파일 다운로드가 아닌 


페이지이동이 되어버리는 현상이 발생합니다. 


이럴때 아래  jsp페이지로 링크를 걸어줘서 스트림으로 내보내는 방법입니다.


아래 페이지로 파일명과 경로를 파라미터로 넘기면 다운로드가 됩니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import='java.util.* , java.io.*'%>

<%
request.setCharacterEncoding("euc-kr");
String fileName = request.getParameter("file_Name");
String filePath = request.getParameter("file_Path");
try{
System.out.println("fileName : " + fileName);
System.out.println("filePath : " + filePath);
if(!fileName.equals(""))
{
 response.setHeader("Content-Type","application/octet-stream");
 response.setHeader("Content-disposition","attachment; filename="+fileName);
 File file = new File (filePath+fileName);
 System.out.println("fileName : " + fileName);
 System.out.println("filePath : " + filePath);
 System.out.println( filePath+ fileName);
 
 if(file.exists())
 {
  byte[] bytestream = new byte[(int)file.length()];
  int i = 0;
  int j = 0;
  BufferedInputStream  fin  = new BufferedInputStream(new FileInputStream(file));
  BufferedOutputStream fouts = new BufferedOutputStream(response.getOutputStream(),4096);
  int read = 0;
  
      try
      {
       while ((read = fin.read(bytestream)) != -1)
       {
        fouts.write(bytestream, 0, read);
       }
       fouts.close();
       fin.close();
      }
      catch (Exception e)
      {
       out.println(e.getMessage());
      }
      finally
      {
       if(fouts!=null) fouts.close();
       if(fin!=null) fin.close();
      }
 }// if end
}
}catch(Exception e){
    out.println(e.getMessage());
    out.println("fileName : " + fileName);
    out.println("filePath : " + filePath);
}


%>