创建文件以下载js

时间:2013-12-02 10:09:39

标签: javascript file download

我正在从API接收JSON输出,我想将它与JS一起使用,并将该输出保存到文件中。有没有办法使用带有输出的JS触发浏览器下载机制?

2 个答案:

答案 0 :(得分:2)

现在某些浏览器可能支持属性download,但您不会触发浏览器自动下载文件。

我知道的唯一方法是@BAS的解决方案,但没有文件名。

用铬测试..

array=[{a:'1',b:'2'},{x:'3',y:'4'}];

function dl(array,filename){
 var b=document.createElement('a');
 b.download=filename;
 b.textContent=filename;
 b.href='data:application/json;base64,'+
 window.btoa(unescape(encodeURIComponent(JSON.stringify(array))))
 // or 
 // b.href='data:application/javascript;charset=utf-8,'+JSON.stringify(json);
 return b
}

document.body.appendChild(dl(array,'my.json'));

例如

http://jsfiddle.net/8yQcW/

更新直接下载 ...在我测试的Chrome上。

on append simulate click

var e=document.createEvent('Events');
    e.initEvent('click',true,false);
    document.getElementById('dl').dispatchEvent(e);

http://jsfiddle.net/8yQcW/1/

答案 1 :(得分:0)

您可以尝试使用数据URI:

function triggerDownload(json) {
 var dataUri = 'data:text;charset=utf-8,' + json;
 window.open(dataUri);
}

尝试在浏览器地址栏中输入data:text;charset=utf-8,{"Key":"Value"}。它应该显示保存对话框。

有关详细信息和浏览器支持,请参阅here