【发布时间】:2013-12-18 00:05:21
【问题描述】:
我正在接收来自 API 的 JSON 输出,我想将它与 JS 一起使用,并将该输出保存到文件中。有没有什么办法可以用带有输出的JS触发浏览器下载机制?
【问题讨论】:
标签: javascript file download
我正在接收来自 API 的 JSON 输出,我想将它与 JS 一起使用,并将该输出保存到文件中。有没有什么办法可以用带有输出的JS触发浏览器下载机制?
【问题讨论】:
标签: javascript file download
也许现在有些浏览器支持download属性,但你不会触发浏览器自动下载文件。
我知道的唯一方法是@BAS 的解决方案,但没有文件名。
在 chrome 中测试..
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'));
例子
UPDATE 直接下载工作 ...在我测试过的 chrome 上。
在追加模拟点击时
var e=document.createEvent('Events');
e.initEvent('click',true,false);
document.getElementById('dl').dispatchEvent(e);
【讨论】:
您可以尝试使用数据 URI:
function triggerDownload(json) {
var dataUri = 'data:text;charset=utf-8,' + json;
window.open(dataUri);
}
尝试在浏览器地址栏中输入data:text;charset=utf-8,{"Key":"Value"}。它应该会显示保存对话框。
有关更多信息和浏览器支持,请参阅here。
【讨论】: