<%@ page pageEncoding="euc-kr" %>
<%@ page trimDirectiveWhitespaces="true" %>
<%@page import="kame.chap18.pds.service.IncreaseDownloadCountService"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="kame.chap18.pds.service.PdsItemNotFoundException"%>
<%@page import="kame.chap18.pds.file.FileDownloadHelper"%>
<%@page import="kame.chap18.pds.model.PdsItem"%>
<%@page import="kame.chap18.pds.service.GetPdsItemService"%>
<%
int id = Integer.parseInt(request.getParameter("id"));
try {
PdsItem item = GetPdsItemService.getInstance().getPdsItem(id);
// 응답 헤더 다운로드로 설정
response.reset();
if(request.getHeader("User-Agent").indexOf("Firefox") > -1) // 리눅스 파이어폭스인 경우
{
String fileName = new String(item.getFileName().getBytes("euc-kr"), "iso-8859-1");
response.setContentType("application/octet-stream;");
response.setHeader("Content-Disposition",
"attachment; filename=\"" + fileName+"\"");
}
else // XP 익스플로어인 경우
{
String fileName = new String(item.getFileName().getBytes("euc-kr"), "euc-kr");
response.setContentType("application/octet-stream;");
response.setHeader("Content-Disposition", "attachment; filename=\"" + java.net.URLEncoder.encode(fileName, "UTF-8")+"\"");
}
response.setHeader("Content-Transfer-Encoding", "binary");
response.setContentLength((int)item.getFileSize());
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");
//response.setCharacterEncoding("euc-kr");
FileDownloadHelper.copy(item.getRealPath(),
response.getOutputStream());
response.getOutputStream().close();
IncreaseDownloadCountService.getInstance().increaseCount(id);
} catch (PdsItemNotFoundException ex) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
%>
파이어폭스와 익스플로어 양쪽에서 모두 다 잘 됩니다.
필요하신 분들 저 소스 그대로 가져다 쓰시면 됩니다.
일단 이런 공부를 할 수 있었던 계기를 만들어 주신 최범균님께 진심으로 감사드리며
남에게 의지하기 보단 스스로 찾아서 해결하는 것의 중요성을 다시 한번 깨달은 것 같습니다.
이렇게 서로 공부하는데 도움이 되는 소스들은 서로 공유했으면 하네요.
첫댓글 소스 고맙습니다.