2016-03-24 11 views
1

Ich verwende archiver, um ein Verzeichnis als Zip-Datei in nodejs/node-webkit zu exportieren.Verzeichnis als zip mit einem SaveFileDialog exportieren

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() 

Jedoch habe ich nichts finden, wie der Benutzer festlegen sollte das Ziel haben, wo die Zip-Datei mit einem traditionellen Savefiledialog exportiert werden.

Weiß jemand, wie ich den Benutzer festlegen können, wo die Zip-Datei mit einem SaveFileDialog in Node-Webkit exportieren?

Antwort

2

Nach Node-Webkit-Wiki können Sie open a dialog programmatically simulieren, indem Sie auf einen specially configured html input field klicken.

So zum Beispiel würden Sie

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

einfügen und so etwas wie diese verwenden, um programm den Dialog optional auslösen und den eingegebenen Pfad zu erhalten:

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

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