使用 SaveFileDialog 将目录导出为 zip

Export directory as zip with a SaveFileDialog

我正在使用 archiver 将目录导出为 nodejs/node-webkit 中的 zip 文件。

var file_system = require("fs")
var archiver = require("archiver")

var output = file_system.createWriteStream("files.zip")
var archive = archiver("zip")

output.on("close", function() {
  console.log(archive.pointer() + " total bytes")
  console.log("archiver has been finalized and the output file descriptor has closed.")
})

archive.on("error", function(err) {
  throw err
})

archive.pipe(output)
archive.bulk([
  { expand: true, cwd: "./content/project/", src: ["**"], dest: "./content/project/"}
])
archive.finalize()

但是我找不到任何关于如何让用户使用传统的 SaveFileDialog 设置 zip 文件导出位置的信息。

有谁知道如何让用户使用 node-webkit 中的 SaveFileDialog 设置导出 zip 文件的目的地?

根据 node-webkit 的 wiki,您可以 open a dialog programmatically by simulating a click on a specially configured html input field

例如你会插入

<input type="file" id="fileDialog" nwsaveas />
<!-- or specify a default filename: -->
<input type="file" id="fileDialog" nwsaveas="myfile.txt" />

并使用类似这样的方式选择性地以编程方式触发对话框并获取输入的路径:

function chooseFile(name) {
  var chooser = document.querySelector(name);
  chooser.addEventListener("change", function(evt) {
    console.log(this.value);
  }, false);

  chooser.click();  
}
chooseFile('#fileDialog');