我正在开发一个应用程序,用户可以单击一个按钮来生成PDF。该按钮进行ajax调用,该URL返回文件的URL。然后,我们再次调用以获取文件(因为该文件受用户的auth令牌保护),因此我得到了一大堆东西。我知道这是正确的格式,因为当我去邮递员中执行相同的请求,然后单击下载按钮时,它会返回正确的pdf。
如何使用JavaScript在浏览器中正确下载文件?
我查看了Download pdf file from ajax response并修改了第二个响应(提供100赏金)以解决Chrome现在应该采用的方式,但是我得到了一个空白的PDF(请注意正确的页面数量)你...)。
在Firefox中,我突然看到一些弹出窗口,然后迅速消失,并且没有下载。
这是我的代码(与其他问题的答案非常相似):
let filename = result.url.split('/')[result.url.split('/').length - 1];
if (typeof window.chrome !== 'undefined') {
// Chrome version
let link = document.createElement('a');
link.href = window.URL.createObjectURL(new Blob([response.data], { type: 'application/pdf' }));
link.download = filename;
link.click();
} else if (typeof window.navigator.msSaveBlob !== 'undefined') {
// IE version
let blob = new Blob([response.data], { type: 'application/pdf' });
window.navigator.msSaveBlob(blob, filename);
} else {
// Firefox version
let file = new File([response.data], filename, { type: 'application/force-download' });
window.open(URL.createObjectURL(file));
}
与最初提出问题的2016年相比,我如何进一步修改此代码以使其在2019年生效?
或者,您如何建议以其他方式进行此操作,同时又保持与我最初描述的相同的API请求流?