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);
但这还不够好:)我希望下载新创建的(文本)文件。不能在相同或单独的窗口中打开。
有办法吗?必须有。怎么样?
(讨论已经存在于Google Chrome group)
中 更新
File API已更改,因为规范已更改(或某些内容!?)。 Webkit破坏了与BlobBuilder
的向后兼容性,现在称为WebKitBlobBuilder
。 Same example differently on jsFiddle
更新
现在创建Blob的工作方式不同(不再是append()
):
blob = new Blob(['some text'], {type: 'text/plain'});
答案 0 :(得分:10)
下载代码与Blob对象结合使用(至少在最新的chrome版本中)。见fiddle:
var blob = new Blob(['blaaaaat'], {type: 'text/plain'});
$('a').attr("href", window.URL.createObjectURL(blob));
$('a').attr("download", "woeii.txt");
尽管如此(它确实支持Blob对象)但是它不是很好(但它确实支持Blob对象)。[p>F̶i̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶有关在Firefox are available here中实施下载属性的讨论:
修改:自2013年10月3日起,最新的firefox版本支持下载属性
答案 1 :(得分:0)
这是一个纯Javascript解决方案,用于创建文本Blob并下载为文本文件
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