jszip递归压缩文件夹的文件,读取文件流
以下是一个使用JSZip库递归压缩文件夹并读取文件流的示例代码:
const JSZip = require("jszip");
const fs = require("fs");
const path = require("path");
// 递归读取文件夹并压缩为zip
function zipFolder(folderPath, zip) {
fs.readdirSync(folderPath).forEach(function (file) {
var curPath = path.join(folderPath, file);
if (fs.lstatSync(curPath).isDirectory()) {
zipFolder(curPath, zip.folder(file)); // 递归处理子文件夹
} else {
// 读取并添加文件到zip中
var data = fs.readFileSync(curPath);
zip.file(file, data);
}
});
}
// 使用方法
const outputFolder = 'path/to/output/folder'; // 输出文件夹路径
const zipPath = path.join(outputFolder, 'archive.zip'); // 输出zip文件路径
// 创建JSZip实例
const zip = new JSZip();
// 压缩指定文件夹
zipFolder('path/to/input/folder', zip); // 需要压缩的文件夹路径
// 将压缩后的内容保存到文件
zip.generateNodeStream({type:"nodebuffer", streamFiles:true})
.pipe(fs.createWriteStream(zipPath))
.on("finish", function() {
console.log("Zip file created.");
});
确保你已经安装了jszip
和fs
模块。如果是在浏览器环境中,请确保使用了适合的浏览器版本,并且使用了适合的JSZip版本。上述代码中的zipFolder
函数递归遍历指定的文件夹,并将文件夹中的每个文件添加到JSZip实例中。然后,使用generateNodeStream
方法将压缩数据流化并写入到指定的文件中。
评论已关闭