在浏览器中下载异步文档

时间:2016-11-08 22:59:56

标签: html ajax pdf

我们有一个html网页1> 2> 3

的网络应用

第2页有一个下载pdf的链接 - 我在表单中使用了锚标记来执行此操作。响应的类型为application / pdf。如果我在第2页上等待,我的pdf最终显示为已下载,但是我希望能够在异步发生pdf下载的情况下转到第3页...

我可以让服务器执行此操作但是只要我请求第3页,浏览器(Chrome)就会显示GET请求(对于pdf)状态:(已取消): - (

我已尝试过HTTP请求和AJAX请求(类型:文档和xhr)的任何建议吗?

到目前为止,我只能在请求处于新标签页时才能使用 - 但这不是我想要的,因为pdf已下载而未在新标签页中打开。

3 个答案:

答案 0 :(得分:0)

如果您的应用为SPA,则可以使用下载网址创建iframe并设置src属性。

如果不是SPA,并且您使用了anchor <a>标记,则使用target="_blank"属性从新窗口下载,在这种情况下,新标签将打开并开始下载,该选项卡将通过在后台进行下载来关闭,以便您可以更改主页上的任何内容。

答案 1 :(得分:0)

如果你想下载而不是显示pdf,我会考虑让服务器设置http响应标题

Content-Disposition: attachment; filename="yourname.pdf"

所以浏览器应该建议“另存为”并打开一个对话框来选择保存位置 - 当导航离开发起下载的页面时,下载通常会继续运行。

对不起,我不知道你是否可以在浏览器方面实现这一目标。

答案 2 :(得分:0)

我的问题的解决方案是访问HttpServletResponse(服务器端),设置标题内容类型(&#34; application / pdf&#34;)和处置(&#34; attachment; filename =&#39 ; ...&#39;&#34;)并刷新outputStream。

这必须在将PDF字节数组写入outputStream之前发生。

以上允许浏览器显示我的PDF下载“#start;#39;然后,我可以在继续下载的同时远离该页面。