使用 node-js 解压缩受密码保护的存档
Unzip a password-protected archive using node-js
我需要将受密码保护的存档(首选 zip)的内容读取到 node-js 应用程序,而不将受保护的内容写入文件
此外,该应用程序是跨平台的,因此 this 等解决方案无济于事
我也看了here但是答案中没有代码
我能找到的唯一支持加密的库是:https://github.com/rf00/minizip-asm.js
不幸的是,它维护得不好。
此解决方案将读取您可以从 base64 获得的文件缓冲区或通过读取 zip 文件,然后解压缩并打开 password-protected 文件完成 in-memory。我希望这会有所帮助 -
const unzipper = require("unzipper");
const unzipAndUnlockZipFileFromBuffer = async (zippedFileBase64, password) => {
try {
const zipBuffer = Buffer.from(zippedFileBase64, "base64"); // Change base64 to buffer
const zipDirectory = await unzipper.Open.buffer(zipBuffer); // unzip a buffered file
const file = zipDirectory.files[0]; // find the file you want
// if you want to find a specific file by path
// const file = zipDirectory.files.find((f) => f.path === "filename");
const extracted = await file.buffer(password); // unlock the file with the password
console.log(extracted.toString()); // file content
} catch (e) {
console.log(e);
}
};
const zippedFileBase64 = "{{BASE64}}";
const password = "1234";
unzipAndUnlockZipFileFromBuffer(zippedFileBase64, password);
我需要将受密码保护的存档(首选 zip)的内容读取到 node-js 应用程序,而不将受保护的内容写入文件
此外,该应用程序是跨平台的,因此 this 等解决方案无济于事
我也看了here但是答案中没有代码
我能找到的唯一支持加密的库是:https://github.com/rf00/minizip-asm.js
不幸的是,它维护得不好。
此解决方案将读取您可以从 base64 获得的文件缓冲区或通过读取 zip 文件,然后解压缩并打开 password-protected 文件完成 in-memory。我希望这会有所帮助 -
const unzipper = require("unzipper");
const unzipAndUnlockZipFileFromBuffer = async (zippedFileBase64, password) => {
try {
const zipBuffer = Buffer.from(zippedFileBase64, "base64"); // Change base64 to buffer
const zipDirectory = await unzipper.Open.buffer(zipBuffer); // unzip a buffered file
const file = zipDirectory.files[0]; // find the file you want
// if you want to find a specific file by path
// const file = zipDirectory.files.find((f) => f.path === "filename");
const extracted = await file.buffer(password); // unlock the file with the password
console.log(extracted.toString()); // file content
} catch (e) {
console.log(e);
}
};
const zippedFileBase64 = "{{BASE64}}";
const password = "1234";
unzipAndUnlockZipFileFromBuffer(zippedFileBase64, password);