强制下载使用JavaScript中的FileWriter创建的blob

Rud*_*die 10 javascript html5 filewriter

HTML5引入了FileWriter类.有了这个课程,你可以制作Blob.(文件是Blob的扩展.)使用JavaScript,您可以创建Blob,例如使用dataURL显示它.

例:

var bb = new BlobBuilder();
bb.append('some text')
var blob = bb.getBlob('text/plain');

var fr = new FileReader();
fr.onload = function(e) {
 document.location = this.result; // voila the dataURL
}
fr.readAsDataURL(blob);
Run Code Online (Sandbox Code Playgroud)

但这还不够好:)我希望下载新创建的(文本)文件.不能在相同或单独的窗口中打开.

有办法吗?必须有.怎么样?

(此讨论已存在于Google Chrome组中)

更新
文件API已更改,因为规格已更改(或某些内容!?).Webkit打破了向后兼容性BlobBuilder,现在称之为WebKitBlobBuilder.同样的例子在jsFiddle上有所不同

更新
创建Blob现在再次以不同的方式工作(不再append()):

blob = new Blob(['some text'], {type: 'text/plain'});
Run Code Online (Sandbox Code Playgroud)

Lau*_*eld 10

下载标记与Blob对象结合使用(至少在最新的chrome版本中).看到这个小提琴:

var blob = new Blob(['blaaaaat'], {type: 'text/plain'});
$('a').attr("href", window.URL.createObjectURL(blob));
$('a').attr("download", "woeii.txt");
Run Code Online (Sandbox Code Playgroud)

Firefox的̶d̶o̶e̶s̶n̶'̶t̶支持下载属性虽然(它支持Blob对象).有关在Firefox 实现下载属性的讨论,请访问:

编辑:自2013年10月3日起,最新的firefox版本支持下载属性

  • 太好了!我不知道下载属性. (2认同)