下载SPA中的文件

时间:2014-01-24 11:47:15

标签: javascript single-page-application

如何在单页应用程序中设置文件下载,而不会触发重新加载?

我遇到过在服务器上生成PDF文件并需要提供给客户端进行下载的情况。将其作为application / octet-stream发送在SPA中没有任何用处,因为files can't be sent over AJAX

我想到的最好的方法是将生成的文件保存在服务器上的临时文件夹中,将文件的URL发送到客户端并执行window.open(url)。问题是不同的浏览器以不同的方式打开文件。例如,Firefox默认使用PDF.js在同一个标​​签页中打开PDF,从而破坏了整个SPA的想法。但是做一个window.open(url, '_blank')经常会触发弹出窗口拦截器等。其他文件类型可能导致上帝知道什么......

在SPA中下载文件是否有跨浏览器,安全,通用的方法?

1 个答案:

答案 0 :(得分:4)

在SPA应用程序中,我写了一段时间后,window.location.href = '...'做了诀窍并且对大多数浏览器都正常工作,但正在下载的页面的contentType和content-disposition标题是最大的区别。如果浏览器可以将文件识别为要下载的类型,则SPA可能不会在重定向时中断。 另外,像Angular这样的快速注释SPA框架有时会在其标签上允许target='_new'target='_self',而不会干扰路线等。