我正在使用FileSaver.js在客户端使用FileSaver.js下载图像。在Chrome和IE11中运行良好。但在Safari11.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中,但没有任何帮助。前缀“dataURL:”来创建数据,但是我非常确定FileSaver.js应该可以处理这个问题。
我读到在FileSaver.js中检查浏览器是否为Safari可能有问题,所以我进入FileSaver.js源代码并将检查更改为Ext.isSafari (使用ExtJs6)。没帮上忙。我被难住了。
会非常感谢任何人的帮助,谢谢。
发布于 2019-02-27 17:55:09
当然,问题不在于FileSaver.js。它甚至不是浏览器相关的,而是操作系统。
问题是,我不能仅仅将.png或.jpg放在SVG上,然后期望它表现良好。在windows (Chrome和IE11)上,“通过扩展名进行转换”运行得很好,但Mac并不认为它是合法的,因此以文件损坏为由拒绝了它。
我可以通过下载带有.svg扩展名的svg文件来重新创建它,查看它在Mac上是否打开得很好,然后将扩展名更改为.png,并看到我得到了相同的错误消息。我猜Windows只是更宽宏大量而已。
https://stackoverflow.com/questions/54825543
复制相似问题