【发布时间】:2011-01-05 06:17:04
【问题描述】:
我有一个 servlet,它允许用户从网页下载(可能很大)zip 文件。如果用户点击一个链接来下载一个 zip 文件,则在 servlet 中执行类似于以下的代码:
response.setContentType("application/zip");
response.setHeader("Content-disposition", "attachment; filename=foo.zip");
response.setHeader("Pragma", "");
response.setHeader("Cache-Control", "no-store");
ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
// write entries to the zip file...
...
out.close()
但是,如果用户在下载开始之后和完成之前(在 Firefox 3.5.7 中)刷新或离开页面,下载将失败。弹出如下错误:
C:\blah\foo.zip.part 不能 保存,因为源文件可以 不被阅读。
稍后再试,或联系服务器 管理员。
关于如何确保在这种情况下继续下载有什么想法吗?
更新:启动下载的链接是一个普通的链接。有趣的是,IE 上的行为是不同的。点击网站上其他地方的链接(从当前加载的屏幕)似乎没有加载(浏览器状态栏显示“等待https://mysite/clicked_linky.do...”),直到下载完成。在地址栏中键入不同的 URL 或使用快捷方式/收藏夹链接会离开页面,但下载会按预期继续。只有 Firefox 似乎显示了我上面描述的确切行为,尽管 IE 阻止不是最佳的。
【问题讨论】:
标签: java http servlets download