在Safari中使用FileSaver.js会损坏下载

问题描述 投票:0回答:1

我正在使用FileSaver.js使用FileSaver.js在客户端下载图像。适用于Chrome和IE11。但是在Safari 11.1中(我需要支持12+),图像(.png或.jpg)下载但不会打开,操作系统会抱怨损坏的文件或不支持的文件类型。

我的下载如下:

fileName = Ext.isIE || Ext.isSafari ? fileName + fileExtension : fileName;
saveAs(new Blob([file], { type: contentType }), fileName);

(saveAs不会在IE11或Safari中添加文件扩展名,因此添加了fileExtension)

无论如何,file是一个svg字符串,contentType是“image / png”或“image / jpeg”。我也尝试了以下调整:将“; charset = utf-8”附加到contentType,这没有帮助。在“data:”之前创建一个dataURL,但我很确定FileSaver.js应该处理这个问题。

我读到可能在检查浏览器是否是FileSaver.js中的Safari时出现问题所以我进入了FileSaver.js源代码并将检查更改为Ext.isSafari(使用ExtJs 6)。没有帮助。我很难过。

非常感谢任何帮助,谢谢。

javascript svg extjs safari filesaver.js
1个回答
0
投票

当然,问题不在于FileSaver.js。它甚至与浏览器无关,它是操作系统。

问题是我不能只是在SVG blob上拍一个.png或.jpg,并期望它表现得很好。在Windows(Chrome和IE11)上,“按扩展名转换”工作正常,但Mac不接受它是合法的,所以拒绝该文件已损坏。

我可以通过下载带有.svg扩展名的svg文件重新创建它,看到它在Mac上打开正常,然后将扩展名更改为.png并看到我收到相同的错误消息。我猜Windows更宽容。

© www.soinside.com 2019 - 2024. All rights reserved.