我们有一个html网页1> 2> 3
的网络应用第2页有一个下载pdf的链接 - 我在表单中使用了锚标记来执行此操作。响应的类型为application / pdf。如果我在第2页上等待,我的pdf最终显示为已下载,但是我希望能够在异步发生pdf下载的情况下转到第3页...
我可以让服务器执行此操作但是只要我请求第3页,浏览器(Chrome)就会显示GET请求(对于pdf)状态:(已取消): - (
我已尝试过HTTP请求和AJAX请求(类型:文档和xhr)的任何建议吗?
到目前为止,我只能在请求处于新标签页时才能使用 - 但这不是我想要的,因为pdf已下载而未在新标签页中打开。
答案 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;然后,我可以在继续下载的同时远离该页面。