1.  
  2. <%@ page  
  3.   language="java" 
  4.   pageEncoding="EUC-KR" 
  5.   contentType="text/html; charset=EUC-KR" 
  6. %> 
  7. <%@page import="java.io.File"%> 
  8. <%@page import="java.io.BufferedInputStream"%> 
  9. <%@page import="java.io.OutputStream"%> 
  10. <%@page import="java.io.FileInputStream"%> 
  11. <%  
  12.     String imgPath = (String)request.getAttribute("imgPath");  
  13.  
  14.     // 이미지 파일 정보 없을때 에러시 메시지 출력  
  15.     if(imgPath.length() == 0){  
  16.         out.print("DB 조회 실패");  
  17.         return;  
  18.     }  
  19.  
  20.     // 파일 다운로드  
  21.     try{  
  22.         // 파일 존재 확인  
  23.         File file = new File(imgPath);  
  24.         if (!file.exists()){  
  25.             throw new Exception();  
  26.         }  
  27.  
  28.         // 파일명 변환  
  29.         int index = imgPath.lastIndexOf("/") + 1;  
  30.         String fileName = imgPath.substring(index);  
  31.         String convertString = new String(fileName.getBytes("euc-kr"), "8859_1");  
  32.         fileName = convertString;  
  33.  
  34.         // response header setting  
  35.         response.setContentType("application/unknown");  
  36.         response.setHeader("Content-disposition","attachment;filename=" + fileName);  
  37.  
  38.         int read;  
  39.         byte readByte[] = new byte[4096];  
  40.  
  41.         BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));  
  42.         OutputStream outs = response.getOutputStream();  
  43.  
  44.         while ((read = fin.read(readByte, 0, 4096)) != -1) {  
  45.             outs.write(readByte, 0, read);  
  46.         }  
  47.  
  48.         outs.flush();  
  49.         outs.close();  
  50.         fin.close();  
  51.  
  52.         out.clear();  
  53.         out = pageContext.pushBody();  
  54.  
  55.     }catch (Exception e){  
  56.         // 에러 발생시 처리  
  57.         out.print("에러발생");  
  58.     }  
  59. %> 


중요부분은 하단에서의 response 의 처리 이다.
out.clear();
out = pageContext.pushBody();

위의 내용을 입력 처리하면 파일 다운로드 시 발행하는 에러의 처리가 가능하다.

+ Recent posts