将JSON数组下载到文件

时间:2017-06-24 13:12:00

标签: angular download angular-routing

以下建议的方法是什么:

应通过按钮下载实体数组。该按钮名为npm start,应该可以完全执行此操作,而不会强制用户“右键单击并将网站另存为...”。

我有一个实体Download transactions和一个包含它的数组。

实体:

Transaction

这是我将此数组作为文件下载的最后一次尝试:

export class Transaction {
  title: string;
  category: string;
  period: string;
  value: string;
}

这会在当前窗口中加载包含结果的选项卡,但是作为纯文本而不是可下载文件。

我知道有很多关于这个话题的问题,我发现没有人为我工作。任何帮助表示赞赏! :)

1 个答案:

答案 0 :(得分:3)

您正在寻找以下功能:

function download(blob, filename) {
    if (window.navigator.msSaveOrOpenBlob) // IE10+
        window.navigator.msSaveOrOpenBlob(blob, filename);
    else { // Others
        var a = document.createElement("a"),
                url = URL.createObjectURL(blob);
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        setTimeout(function() {
            document.body.removeChild(a);
            window.URL.revokeObjectURL(url);  
        }, 0); 
    }
}

然后

exportJson(): void {
    console.log(this.transactions)
    const c = JSON.stringify(this.transactions);
    const file = new Blob([c], {type: 'text/json'});
    download(file,"fileName.json");
  }