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

我可以使用节点fs模块将导出数据实现为节点webkit上的csv。 但现在我想提示用户将文件保存在他/她想要的位置。 就像html下载popup窗口一样。 我试图做这个代码的行,甚至这个文件对话框 。 有人能帮我find一个办法吗? 这是我的代码。

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> 

我在这里find了一个解决schemehttp://9ijy.net/blog/view/6

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

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

第2步在你的JavaScript文件中添加一个新的function,如下所示:

 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(名称,数据)function,如下所示,将您的文件保存在任何你喜欢的地方:

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