05.JSP2009. 1. 30. 20:07
반응형
 

InputStream과 OutputStream을 사용하는 경우 파일사이즈가 크면 java.lang.OutOfMemoryError이 발생하는 경우가 생겨, BufferedInputStream과 BufferedOutputStream을 사용하여 문제를 해결해 보았다.


JSP 다운로드 프로그램:


 try {
  String path = WEBConstants.SYSTEM_DOCROOT;
  File file = new File(path + filePath);


  response.reset() ;
  response.setContentType("application/x-octetstream");

  response.setHeader("Accept-Ranges", "bytes");
  response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(), "UTF-8") +"\"" );
  response.setHeader("Content-Length", ""+file.length() );

  BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
  BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());

  int read = 0;
  while((read = in.read()) != -1) {
   os.write(read);
  }
 
  in.close();
  os.close();
 } catch(Exception e) {
  e.printStackTrace();
  out.println("<script language=javascript>");
  out.println("alert('Does not file !');");
  out.println("history.go(-1)");
  out.println("</script>");
 }

Posted by 1010