Downloading files in a SPA

How does one go about setting up file download in a Single Page Application, without triggering a reload?

I have had a situation where a PDF file is generated on the server and needs to be given to the client for download. Sending it as an application/octet-stream does nothing useful in a SPA, because files can't be sent over AJAX.

The best I came up with is saving the generated file in a temp folder on the server, sending file's URL to the client and doing window.open(url) . The problem is that different browsers open files differently. Firefox for instance, by default, opens PDFs in the same tab, using their PDF.js , disrupting the whole SPA idea. But doing a window.open(url, '_blank') often triggers popup blockers etc. Other file types can cause God knows what...

Is there a cross-browser, safe, general method for downloading files in a SPA?


In SPA application I wrote a while back the the window.location.href = '...' did the trick and worked correctly for most browsers, but the contentType and content-disposition header of the page being downloaded is what makes the biggest difference. if the browser can recognize the file as a type do be downloaded then chances are the SPA won't break on redirect. Also just a quick note SPA frameworks like Angular sometimes allow for target='_new' and target='_self' on their a tags without interfering with the routes and such.

链接地址: http://www.djcxy.com/p/77032.html

上一篇: GLSL使用pow()时的问题

下一篇: 在SPA中下载文件