JSP/Servlet 환경에서 다운로드를 사용할 경우는
아래와 같은 순서를 가진다.
1. HttpServletResponse 로 부터 OutStream 을 얻는다.
2. Header, ContentsType 등을 설정한다.
3. FileStream 을 통해 전송될 파일의 스트림을 얻는다.
4. Response 로 부터 얻은 outputStream 에 파일을 쏜다.
5. 열려진 모든 자원을 닫는다.
뭐 다른것들은 괜찮지만 2번 항목에서 환경에 따라 헤더 설정이 틀려진다.
단독 WAS 환경인지, WAS 앞에 Apache 나 IIS 가 있는지 등등..
웬만한 부분에서는 아래와 같은 Header 설정이면 충분하다.
res.setContentType("appliction/octet-stream");
res.setHeader("Accept-Ranges","bytes");
res.setHeader("Content-Transfer-Encoding", "binary;");
res.setHeader("Pragma", "no-cache;");
res.setHeader("Expires", "-1;");
res.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");
문제는 위 설정으로 zip 파일이나, 다른 파일들은 저장, 열기가 잘 되지만 유독 HWP 파일에서 문제가 생긴다.
다운로드 창까지는 잘 뜨는데, 열기 버튼을 누르면 파일을 찾을 수 없다고 나온다.
저장해서 보면 잘 보이지만 ㅎㅎ
여차저차 해서 헤더에 아래와 같이 추가해줬다.
res.setHeader("Cache-control","private");
잘 된다 ^^
캐시 컨트롤을 private 으로 하겠다는 의미는 전송되는 개체가 공유 캐시에 보관되지 않고 특정 클라이언트만을 대상으로 해야 한다는 말이다.
'JAVA > JSP_Servlet' 카테고리의 다른 글
java windows authentication (0) | 2008.07.23 |
---|---|
[펌] Ajax Progress + commons fileupload (0) | 2007.12.23 |
[펌] JavaScript/JSP 에서 XSS 막기 (0) | 2007.07.03 |
sitemesh 사용할 경우 title 을 못찾는다고 null point 익셉션이 발생할때... (0) | 2007.05.06 |
[javascript] Project jMaki (0) | 2006.10.12 |