在iOS Chrome和Safari上使用FileSaver.js保存或打开Blob

11
我使用 docxtemplater 库从 Javascript 创建 docx 文档。
在桌面浏览器上,它可以正常工作。 在移动设备上,Android 没有问题,但是 iOS 上存在一些问题。
在 iOS 上,当我尝试下载或打开文档时,在浏览器中会创建一个新标签页,此时我可以看到如下类型的 URL:
blob:http://mylocalServer/987788-3524-33iuhih3334434434

在这个新标签页中,我看不到文档,也没有任何下载的方式。
如何才能在iOS设备上获取docx文档的解决方案?
以下是使用JS创建docx文档的代码:
out=doc.getZip().generate({type:"blob"});
// Give a name for the output word document
var outputName = "test.docx" ;
saveAs(out,outputName);

saveAs函数在FileSaver.js文件中被调用:

当在iOS上执行此操作时,我们将执行以下代码:

fs_error = function() {
// don't create more object URLs than needed
if (blob_changed || !object_url) {
    object_url = get_URL().createObjectURL(blob);
}
if (target_view) {
    target_view.location.href = object_url;
} else {
    var new_tab = view.open(object_url, "_blank");
    if (new_tab == undefined && typeof safari !== "undefined") {
        //Apple do not allow window.open, see http://bit.ly/1kZffRI
        view.location.href = object_url
    }
}
filesaver.readyState = filesaver.DONE;
dispatch_all();
revoke(object_url);
}
1个回答

0

应将 Blob 类型设置为 application/vnd.openxmlformats-officedocument.wordprocessingml.document,以便 Safari 在iOS 11 及以上版本中可以显示文档,并且用户可以手动下载它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接