【发布时间】:2019-09-09 15:01:10
【问题描述】:
我有一个使用 base64 创建的 blob,我需要将此数据以 pdf 格式下载。
我创建了这个 sn-p:
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?
谢谢
【问题讨论】:
-
我不确定您的问题是否是 github.com/keeweb/keeweb/issues/130 描述的问题 另一个建议:回到过去,当 CGI and perl 仍然存在时,我通过添加各种不同的标题解决了类似的问题http response header 中的行。您可能必须为此使用较低级别的 JS 库。此外,您需要查看 Safari 真正解释了哪些标头,可能是
content-disposition。 -
这个问题没有得到足够的重视,感谢@GerardoFurtado 的赏金。一周后,我会自信地说,这个浏览器不存在任何特定的解决方法,而且最奇怪和最深奥的解决方案也不会提供任何令人满意的结果。关于我的具体案例,我向营销部门解释了这个问题,我们选择在新选项卡中查看该文件。也就是说,如果我们匹配 safari/IOS 浏览器,采用的方案如下:
window.open('data:application/pdf;base64,'+escape(base64), '_blank');
标签: javascript html ios download safari