如何生成一个文件,并提供它在普通的JavaScript下载?

时间:2011-05-30 11:01:09

标签: javascript html5 download blob fileapi

我想动态生成javascript文本文件,然后提供下载。目前,我可以通过以下任一解决方案获得此工作:

content = "abc123";
document.location = "data:text/octet-stream," + encodeURIComponent(content);

OR

content = "abc123";    
var bb = new BlobBuilder();
bb.append(content);
var blob = bb.getBlob();
blob = blob.slice(0, blob.size, 'text/octet-stream');
var fr = new FileReader(); 
fr.onload = function() {document.location = this.result;}
fr.readAsDataURL(blob);

但是,当下载框出现时,这两种解决方案只会在另存为对话框中提供默认文件名“下载”。

我的问题基本上是,如何将其更改为特定文件名,例如'readme.txt'或'scene.obj'

另请注意,数据类型以前是“text / plain”,但如果使用此文档,则文档会切换到新的文本文档,而不是提供下载(如text / octet-stream似乎那样)。

我不想要一个flash解决方案,javascript / html5只能提出建议。

干杯,乔希

2 个答案:

答案 0 :(得分:4)

为此,您必须使用FileAPI:Writer规范中的FileSaver。 目前,它只是一个草案,根据mailing list answer,它尚未在浏览器中实现。

您可以在chromium issue上观看以获取有关实施进度的最新信息

UPD 02.08.2013:我发现project使用简洁技巧提供FileSaver界面

答案 1 :(得分:0)

我认为你应该检查:jQuery Table to CSV export