在node.js中生成受密码保护的ZIP文件

gre*_*uze 8 javascript zip password-protection node.js

我需要在node.js中创建一个受密码保护的ZIP文件.

我使用"node-zip"模块,遗憾的是不支持密码保护:

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

查看其他节点模块以创建ZIP文件,我还没有找到任何支持密码保护.

use*_*109 13

如果你在linux上工作,那么你可以借助zip(大多数Linux发行版中的命令行实用程序)来完成它.只需在您的应用中包含以下内容即可

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
});
Run Code Online (Sandbox Code Playgroud)

如果你想压缩文件夹,只需在文件夹路径而不是文件路径之前放入另一个参数'-r'.

请记住,这会从主进程生成单独的线程,因此它是非阻塞的.有关详细信息,child_process请访问http://nodejs.org/api/child_process.html

  • 您的意思是压缩变量中而不是文件中的任何数据。Zip 还接受单破折号(“-”)作为要压缩的文件的名称,在这种情况下,它将从标准输入读取文件。您可以将文件内容写入生成的子进程的标准输入 zip.stdin.write(data); 在同一页面上查找标准输入示例。http://nodejs.org/api/child_process.html#child_process_child_stdin (2认同)

yoz*_*ozh 7

我遇到了同样的问题,找不到可以执行此操作的包,因此我自己编写了一个,作为存档程序包的插件。纯JS,无需外部zip软件。

这是 - https://www.npmjs.com/package/archiver-zip-encrypted。支持 WinZip 的旧式 Zip 2.0 加密和 AES-256 加密。


jam*_*mes 6

对于那些像我一样在这里结束的人,我在节点中尝试了几个包但最终使用了这个包:https://www.npmjs.com/package/minizip-asm.js

它支持密码(使用AES),并且非常易于使用.我很惊讶它没有那么多下载,因为它是我发现支持密码的唯一一个.