在浏览器中下载异步文档



我们有一个带有html页面的web应用程序1>2>3

第2页有一个下载pdf的链接-我在表单中使用了锚标记来做到这一点。响应的类型为application/pdf。如果我在第2页等待,我的pdf最终显示为已下载,但我希望能够移动到第3页,pdf下载发生异步…

我可以让服务器这样做,但一旦我请求第3页,浏览器(Chrome)显示get请求(pdf)为状态:(取消):-(

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

到目前为止,我只能让它工作时,请求是在一个新的选项卡-但这不是我想要的pdf下载,而不是在新的选项卡中打开。

如果您的应用程序是SPA,您可以创建一个iframe并设置src属性与下载url。

如果它不是SPA,你使用anchor <a>标签,然后使用target="_blank"属性从一个新的窗口下载它,在这种情况下,新的选项卡将打开并开始下载,选项卡将被关闭,让下载发生在后台,这样你就可以改变主页上的任何东西。

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

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

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

我很抱歉,我不知道你是否可以实现这纯粹在浏览器端。

解决我的问题是访问HttpServletResponse(服务器端),设置标题内容类型("application/pdf")和处置("attachment;filename='…'")并刷新outputStream。

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

上面的代码允许浏览器显示我的PDF下载为"已开始",然后我可以在下载继续的时候离开那个页面。

最新更新