如何使用node-7z-archive在Node.js中创建并提取加密Zip包
使用node-7z-archive实现带密码保护的文件夹压缩与提取
第一步:安装依赖
先安装node-7z-archive包:
npm install node-7z-archive
替换原archiver代码:加密压缩文件夹
下面是替换后的加密压缩实现,完全匹配你原代码的文件夹打包逻辑,同时添加密码保护:
const fs = require('fs'); const { SevenZipArchive } = require('node-7z-archive'); const sourceFolder = 'create_zip'; // 替换为实际文件夹路径 const zipFileName = 'output.zip'; const password = 'your-secure-password'; // 设置自定义加密密码 // 创建SevenZipArchive实例,配置密码、压缩级别和格式 const archive = new SevenZipArchive(zipFileName, { password, compressionLevel: 9, // 和原代码zlib级别9的压缩强度一致 format: 'zip' }); // 添加整个文件夹到压缩包,第二个参数false表示不保留外层根目录(和原archiver行为一致) archive.addDirectory(sourceFolder, false); // 执行压缩并处理结果 archive.create() .then(() => { console.log('带密码保护的Zip压缩包已创建'); }) .catch((err) => { console.error('压缩出错:', err); throw err; });
提取加密Zip文件
下面是提取带密码保护的Zip文件的实现:
const { SevenZipArchive } = require('node-7z-archive'); const zipFileName = 'output.zip'; const extractDir = 'extracted_files'; // 指定提取目标目录 const password = 'your-secure-password'; // 对应压缩时设置的密码 // 创建SevenZipArchive实例并传入密码 const archive = new SevenZipArchive(zipFileName, { password }); // 执行提取操作 archive.extract(extractDir) .then(() => { console.log('加密Zip文件已成功提取到', extractDir); }) .catch((err) => { console.error('提取出错:', err); throw err; });
关键说明
- 密码配置:通过实例化时的
password参数传入,直接支持Zip格式的密码加密 - 压缩级别对齐:
compressionLevel:9和原archiver的zlib: { level:9 }压缩强度一致 - 文件夹结构匹配:
addDirectory的第二个参数false确保压缩包内不包含外层根目录,和你原代码的行为完全一致 - 异步逻辑优化:基于Promise的API相比原流事件监听,代码更简洁易维护
内容的提问来源于stack exchange,提问作者Varun Suryavanshi
相关产品推荐
相关产品推荐

