【问题标题】:Servlet: Force Browser (Google Chrome) to Open 'Save As' Dialog ImmediatelyServlet:强制浏览器 (Google Chrome) 立即打开“另存为”对话框
【发布时间】:2014-03-23 18:05:48
【问题描述】:
我有一个 servlet (Java EE),它返回一个大的 pdf 文件到 UI/浏览器 (HTML & JavaScript) 以供下载。服务器生成文件需要 10-20 秒,所以我试图尽快弹出另存为对话框,以避免浏览器延迟、用户混淆、等待等。
我只想发送标头等只是为了建立连接,当服务器完成工作后,我们会刷新剩余的有效负载。
我在标头和刷新缓冲区之后立即发送。这在 Firefox 中运行良好,浏览器显示对话框,从而消除了浏览器等待并产生下载已经开始的错觉,,这不适用于 chrome。
任何帮助表示赞赏。
【问题讨论】:
标签:
java
javascript
google-chrome
jakarta-ee
servlets
【解决方案1】:
我通过设置 content-disposition 标头来修复它,下面是非 java 语法
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
【解决方案2】:
response.setContentType("application/octet-stream");