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>");
}
[출처] [본문스크랩] JSP 파일 다운로드 프로그램|작성자 버그리아