使用JavaScript中的FileWriter创建的BLOB下载[副本
-
11-10-2019 - |
题
这个问题在这里已经有一个答案:
HTML5介绍了Filewriter类。有了这个课程,您可以制作斑点。 (文件是斑点的扩展。)使用JavaScript,您可以制作斑点,例如使用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);
但这还不够好:)我希望下载新创建的(文本)文件。未在同一或单独的窗口中打开。
有办法吗?必须有。如何?
(讨论已经存在于 Google Chrome Group)
更新
文件API已更改,因为规格已更改(或其他!?)。 Webkit与向后兼容 BlobBuilder
, ,现在叫 WebKitBlobBuilder
. 在JSFIDDLE上以不同的示例
更新
现在,创建斑点再次有所不同(不再 append()
):
blob = new Blob(['some text'], {type: 'text/plain'});
解决方案
与Blob对象结合使用的下载标签可以解决问题(至少在最新的Chrome版本中)。看到这个 小提琴:
var blob = new Blob(['blaaaaat'], {type: 'text/plain'});
$('a').attr("href", window.URL.createObjectURL(blob));
$('a').attr("download", "woeii.txt");
f̶i̶r̶e̶f̶o̶x̶d̶o̶e̶e̶s̶s̶s̶s̶s̶s̶s̶p̶p̶p̶o̶p̶o̶t̶关于Firefox中下载属性实施的讨论 在这里可用:
编辑: 截至2013年10月3日,下载属性现在由最新的Firefox版本支持
其他提示
这里有一个 纯JavaScript解决方案 用于创建文本斑点并下载为文本文件
var fileContent = 'This is sample text file';
var fileName = 'sampleFile.txt';
const blob = new Blob([fileContent], { type: 'text/plain' });
const a = document.createElement('a');
a.setAttribute('download', fileName);
a.setAttribute('href', window.URL.createObjectURL(blob));
a.click(); // EXECUTING CLICK EVENT WILL AUTO-DOWNLOAD THE FILE
不隶属于 StackOverflow