Search code examples
javascriptnode.jszippassword-protection

Generate a password protected ZIP file in node.js


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.


Solution

  • 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