javascript - Safari/iOS 中 'download' 属性的替代方法

标签 javascript html ios download safari

我有一个使用 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/

相关文章:

javascript - 向 xtemplate 循环中的每个元素添加监听器

javascript - 在 JavaScript 中访问网页的 HTTP header

javascript - Crystal Reports 2011 + ASP .NET + bobj 未定义

javascript - 以编程方式调用 onclick 属性

html - 将简单文本插入到 iframe 中?不是 .htm 文件

html - 缩进表格边框

ios - 无法为不同的字典设置不同的值

ios - static const 与 extern const

ios - 如何使用 Alamofire Swift 读取 Content-Length HTTPResponse

javascript - 如何使用 grunt 任务运行网站