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

Jos*_* Mc 5 javascript html5 blob download fileapi

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

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

要么

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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

我不想要一个flash解决方案,javascript/html5只有建议.

干杯,乔希

Ale*_*der 4

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

例如,您可以关注chromium 问题以获取有关实施进度的最新信息

UPD 02.08.2013:我发现了一个使用巧妙技巧提供 FileSaver 界面的项目