Generate a password protected ZIP file in node.js

greuze picture greuze · Feb 12, 2013 · Viewed 15.8k times · Source

I need to create a ZIP file in node.js, protected by a password.

I am using "node-zip" module, that unfortunately doesn't support password protection:

var zip = new require('node-zip')();
zip.file('test.file', 'hello there');
var data = zip.generate({base64:false,compression:'DEFLATE'});

Looking other node modules to create ZIP files, I haven't found any that support password protection.

Answer

user568109 picture user568109 · Feb 12, 2013

If you work on linux then you can do it with the help of zip (command line utility in most linux distributions). Just include the following in you app.

spawn = require('child_process').spawn;
zip = spawn('zip',['-P', 'password' , 'archive.zip', 'complete path to archive file']);
zip .on('exit', function(code) {
...// Do something with zipfile archive.zip
...// which will be in same location as file/folder given
});

If you want to zip a folder just put another argument '-r', before the folder path instead of file path.

Remember this spawns separate thread, from main process, so it is non blocking. For more info on child_process look here http://nodejs.org/api/child_process.html