【问题标题】:Create file to download js创建文件下载js
【发布时间】:2013-12-18 00:05:21
【问题描述】:

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

【问题讨论】:

    标签: javascript file download


    【解决方案1】:

    也许现在有些浏览器支持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'));
    

    例子

    http://jsfiddle.net/8yQcW/

    UPDATE 直接下载工作 ...在我测试过的 chrome 上。

    在追加模拟点击时

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

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

    【讨论】:

      【解决方案2】:

      您可以尝试使用数据 URI:

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

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

      有关更多信息和浏览器支持,请参阅here

      【讨论】:

        猜你喜欢
        • 2019-07-17
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-06
        相关资源
        最近更新 更多