【发布时间】:2011-09-25 02:26:26
【问题描述】:
一切正常,但只有文件很小,大约 1MB,当我尝试使用更大的文件时,比如 20MB,我的浏览器会显示它,而不是强制下载,到目前为止我尝试了很多标题,现在我的代码看起来:
PrintWriter out = response.getWriter();
String fileName = request.getParameter("filename");
File f= new File(fileName);
InputStream in = new FileInputStream(f);
BufferedInputStream bin = new BufferedInputStream(in);
DataInputStream din = new DataInputStream(bin);
while(din.available() > 0){
out.print(din.readLine());
out.print("\n");
}
response.setContentType("application/force-download");
response.setContentLength((int)f.length());
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition","attachment; filename=\"" + "xxx\"");//fileName);
in.close();
bin.close();
din.close();
【问题讨论】:
-
设置内容类型应该可以。是哪个浏览器?
-
哪个浏览器? Octet-stream 应该是正确的答案,但旧版本的 IE 过去常常尝试“嗅探”内容类型,而不管 Web 服务器告诉它什么
-
chrome、ff 3.6 和其他所有可能...
-
标题在前,数据在后,而不是其他方式!
-
Content-Disposition 附件会做到这一点。请注意,应用程序/强制下载是某种特定的 hack,而不是标准,请阅读:media-division.com/…
标签: java servlets jakarta-ee