서버에서 약 10M 크기의 파일을 다운로드해야하는 프로젝트에 있습니다. 그리고 직접 URL (https : // serveraddress : port/filepath)을 사용하여 다운로드합니다. 파이어 폭스와 IE9는 괜찮지 만 IE8은 그렇지 않습니다. 비슷한 케이스를 여기서 검색했는데 쿠키 설정에 문제가있는 것으로 보입니다. HTTPS를 통해 파일 다운로드
그래서 나는 다음과 같은 추가 : XHTML의 파일의 머리에을, 그러나 나는 응답 헤더는 다음과 같이 아직 발견
에서 Pragma 없음 캐시 캐시 제어 노 캐시
다음에 다음을 추가하십시오. response.setHeader ("Cache-Control", "private"); response.setHeader ("Pragma", "public"); response.setHeader ("Expires", "-1"); JSP 파일에
및 BufferedInputStream을와의 BufferedOutputStream가 파일을 읽고 쓸 수 있지만 여전히 작동하지 않는 사용, 그것은사람이 도움을 줄 수 debug.xhtml 페이지로 리디렉션?
전체 JSP 파일은 다음과 같습니다
final int DEFAULT_BUFFER_SIZE = 10240;
try {
String fileName = request.getPathInfo();
File fileToDownload = new File(request.getSession().getServletContext().getRealPath("/")+ "installer/" + fileName);
if(!fileToDownload.exists()){
response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
return;
}
response.setHeader("Cache-Control", "private");
response.setHeader("Pragma", "public");
response.setHeader("Expires", "-1");
response.setHeader("Content-Disposition","attachment; filename=\"" + fileToDownload.getName()+"\"");
response.setBufferSize(DEFAULT_BUFFER_SIZE);
String contentType = getServletContext().getMimeType(fileToDownload.getName());
if (contentType == null) {
contentType = "application/octet-stream";
}
response.setHeader("contentType", contentType);
response.setHeader("Content-Length", String.valueOf(fileToDownload.length()));
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
input = new BufferedInputStream(new FileInputStream(
fileToDownload), DEFAULT_BUFFER_SIZE);
output = new BufferedOutputStream(response
.getOutputStream(), DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
int index = 1;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
} finally {
output.close();
input.close();
}
System.out.println("finish");
} catch (Exception e) {
e.printStackTrace();
}
"NOT OK"를 정의하십시오. "불만"이란 무엇입니까? – deceze
그냥 작동하지 않는 것을 의미합니다. IE8을 사용하여 파일을 다운로드 할 수 없습니다. – PhoenixCA
IE8에서 * 어떤 일이 일어나고 있습니까? – deceze