node-webkit:将数据导出到csv并提示用户保存文件

node webkit: export data to csv and prompt the user to save the file

本文关键字:csv 提示 用户 保存文件 数据 node-webkit      更新时间:2023-09-26

我可以使用node fs模块在node webkit上实现将数据导出到csv。但现在我想提示用户将文件保存到他/她想要的位置。就像html中的下载弹出窗口一样。我试着在这段代码的行上做,甚至在这个文件对话框上做。有人能帮我找到摆脱困境的方法吗。这是我的密码。

fs.writeFile("export.csv", data, function(err) {
    if(err) {
       console.log(err);
    } else {
        $('#export_file').show();
        $('#export_file input').on('change', function (event) {
            console.log($(this).val());
            console.log("The file was saved!");
        });
    }
});
<div id="export_file" style="display:none">
    <input type="file" nwsaveas nwworkingdir="/data/input/" />
</div>

我在这里找到了一个解决方案http://9ijy.net/blog/view/6

步骤1在你的html文件中,添加一个输入标签块,如下所示:

<input id="export_file" type="file" nwsaveas style="display:none" nwworkingdir=""/>

步骤2在javascript文件中添加一个新函数,如下所示:

function saveFile(name,data) {
    var chooser = document.querySelector(name);
    chooser.addEventListener("change", function(evt) {
      console.log(this.value); // get your file name
     var fs = require('fs');// save it now
fs.writeFile(this.value, data, function(err) {
    if(err) {
       alert("error"+err);
    }
});
    }, false);
    chooser.click();  
  }

步骤3使用saveFile(名称,数据)功能将您的文件保存到您喜欢的位置,如下所示:

...
_exportCSV="you data to save";
saveFile('#export_file',_exportCSV);
  • 您正在编写文件对话框代码,作为对fs.writeFile.a的回调回调意味着它将在文件保存后被调用。这是现在可能发生的事情。1) 文件写入当前node-webkit应用程序运行的目录。2) 当文件保存时没有出现任何错误,则会显示对话框。但这个对话是没有帮助
  • 相反,请先显示对话框并从中获取文件路径(https://github.com/rogerwang/node-webkit/wiki/File-dialogs)。将此路径作为fs.writeFile()中的第一个参数传递。完成