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.
上一篇: GLSL使用pow()时的问题
下一篇: 在SPA中下载文件