fileList.jsp
FileDownloadServlet(/file/fileDownload.do)
파일 번호, 유저ID 가져오기
2개 의 값으로 해당 정보를 찾는 비즈니스 로직 처리( <->Service <-> DAO)
리턴 값에 따라 로직 처리
다운로드를 하려면 처리해야 하는 로직
사용자의 브라우저가 다운로드를 받을 수 있도록 변경
response.setContentType("application/octest-stream");
보내고자 하는 파일의 사이즈 설정
response.setContentLength((int) file.length());
보내고자 하는 파일 이름 변경
파일 이름을 UTF-8 인코딩 방식에서 ISO-8859-1로 변경
String fileName = new String(fd.getOriginalFileName().getBytes(), "ISO-8859-1");
response를 통해서 보내고자 하는 파일의 이름을 위에서 인코딩한 파일 이름으로 변경해서 전달
response.setHeader("Content-Disposition", "attachement;filename=" + fileName);
실제 파일이 가지고 있는 데이터 전달
FileInputStream fIn = new FileInputStream(file);
ServletOutputStream out = response.getOutputStream();
데이터를 4KByte씩 쪼개서 보내기
byte[] outputByte=new byte[4096];
while(fIn.read(outputByte, 0, 4069) != -1){
out.write(outputByte,0,4069);
}
스트림 연결 종료
fIn.close();
out.flush(); // 스트림을 한번 깨끗하게 지워라
out.close();