我有一个使用 base64 创建的 blob,我需要将此数据作为 pdf 格式下载。
我创建了这个片段:
var blob = new Blob([byte]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.target = '_blank';
var fileName = name + '.pdf';
link.download = fileName;
link.click();
它适用于所有浏览器,但 iOS 上的 safari mobile 除外。
文件确实下载了,但是文件名是“未知”,扩展名丢失导致无法打开。
问题是 download attribute在此浏览器和 IE 上缺乏支持。
IE 有很多变通办法,但我没有找到 Safari/iOS 的变通办法。
您知道如何在此浏览器中下载从 base64(不涉及 XHR)获得的 blob 吗?
谢谢
最佳答案
I need to make this data downloadable as a pdf (...) in safari iOS
简短回答:你不能。由于这个bug无法在 Safari iOS 上下载文件
另一种方法是使用正确的 MIME 类型在浏览器上打开文件,这样它就可以显示其内容(然后用户可以根据需要手动下载它)。
确保在创建 Blob 时传递 mime 类型。 reference
var blob = new Blob([byte], {type: 'application/pdf'});
最后,我强烈建议您使用 FileSaver.js它可以处理大多数极端情况/多个浏览器支持在 javascript 中保存(或在本例中打开)文件。
关于javascript - Safari/iOS 中 'download' 属性的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55760169/