在满足条件时下载 CSV

downloading a CSV when a condition is satisfied

本文关键字:下载 CSV 条件 满足      更新时间:2023-09-26

我有一个将JSON转换为CSV的代码。我把它放在一个特定的条件(如果条件(我希望在满足条件时自动下载 CSV,而无需单击任何按钮。最短/最简单的方法是什么?

例如:

if( data.length == 10){
        var stored_data = data;
        data = [];
        console.log(stored_data);
        var csv_file = ConvertToCSV(stored_data);   //ConvertTOCSV is a function
        }

如果满足上述条件,则应下载 CSV。谢谢

注意:我知道这可以通过单击按钮轻松完成。 但是我希望在满足条件时自动进行下载

只需创建一个"虚拟"链接并以编程方式设置其 href,然后单击。该链接不应显示在屏幕上,因为它没有内容。

<body>
  <a href="#" id="csvDownload" download></a>
</body>
<script>
if( data.length == 10){
        var lnk = document.getElementById("csvDownload");
        var stored_data = data;
        data = [];
        console.log(stored_data);
        var csv_file = ConvertToCSV(stored_data);   //ConvertTOCSV is a function
        lnk.href = csv_file;
        lnk.click();
 }
</script>

您可以通过更改文档位置以指向您创建的对象来尝试执行的操作,但是我在尝试为您创建快速示例时遇到的问题是,我似乎无法为文件提供可用的名称和扩展名。 因此,所有下载的内容都作为称为"下载"的文件下载,没有扩展名(但是 - 文件内容是正确的(。

因此,如果您想寻找一种方法来为流提供名称和文件类型,您可以从这样的东西开始 -

document.location='data:Application/octet-stream,' + encodeURIComponent(csv_file(;

但我想说,@Scott的答案是一个更好的方法。