11

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);

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

有办法吗?必须有。如何?

(讨论已经在谷歌浏览器群里了)

更新
文件 API 已更改,因为规范已更改(或其他内容!?)。Webkit 打破了向后兼容BlobBuilder,现在称为WebKitBlobBuilder. jsFiddle上的相同示例不同

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

blob = new Blob(['some text'], {type: 'text/plain'});
4

2 回答 2

12

与 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̶s̶n̶'̶t̶̶s̶u̶p̶p̶o̶r̶t̶̶t̶h̶e̶̶d̶o̶w̶n̶l̶o̶a̶d̶̶a̶t̶t̶r̶i̶b̶u̶t̶e̶ 虽然(它确实支持 Blob 对象)。有关在 Firefox中实现下载属性的讨论可在此处获得

编辑:截至 2013 年 10 月 3 日,最新的 Firefox 版本现在支持下载属性

于 2013-02-27T14:43:32.673 回答
1

这是用于创建文本 blob 并下载为文本文件的纯 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
于 2019-06-19T09:35:18.700 回答