使用Safari在本地下载blob

Eri*_*rik 36 javascript safari html5

我正在尝试找到一种跨浏览器的方式来在HTML5中本地存储数据.我在Blob中生成了一大块数据(参见MDN).现在我想将这个Blob移动到实际的文件系统并将其保存在本地.我找到了以下方法来实现这一目标;

  • 使用该<a download>属性.目前仅适用于Chrome.
  • 微软saveAs在IE 10中引入了一个能够实现这一目标的功能.
  • 在浏览器中打开Blob URL并以此方式保存.

但这些似乎都不适用于Safari.虽然(1)在Chrome中工作,(2)在IE中工作,(3)在IE中工作,但没有人在Safari 6中工作.下载属性尚未实现,当尝试使用URL打开blob时,Safari会抱怨开头的URL blob:是无效的网址.

有一个很好的脚本封装了(1)和(3),称为FileSaver.js,但使用最新的Safari版本无效.

有没有办法以跨浏览器的方式在本地保存Blob?

nau*_*tur 23

最近更新 FileSaver.js ,它适用于IE10,Safari5 +等.

请参阅:https://github.com/eligrey/FileSaver.js/#supported-browsers

  • [FileSaver.js演示](http://eligrey.com/demos/FileSaver.js/)正在回归到Safari中的`data:`url,就像我的回答一样.示例:data:text/plain; charset = UTF-8; base64,aGEgw6Agw6kgw7g = (6认同)

mal*_*lix 5

文件名很糟糕,但这在Safari 8中适用于我:

        window.open('data:attachment/csv;charset=utf-8,' + encodeURI(csvString));
Run Code Online (Sandbox Code Playgroud)

更新:不再在Safari 9.x中工作


for*_*sto 4

我想出的唯一解决方案是制作一个 data: url 。对我来说,这看起来像:

window.open("data:image/svg+xml," + encodeURIComponent(currentSVGString));
Run Code Online (Sandbox Code Playgroud)