NodeJS:创建 zip,但在磁盘上,而不是在内存中
NodeJS: create zip, but on disk, not in memory
我需要创建一个包含大约 1GB 数据的 zip 文件(但这个数量在未来会增加)。最初我用 AdmZip 构建它,但由于我们的 VM 没有大量内存,(它也不需要它,除非它正在创建这个 zip 文件,所以我不想扩大规模),它运行内存不足并崩溃。
然后我重建了进程以使用命令行 zip
,但是在完成所有设置并发布到服务器之后,我不得不找出该命令不可用的困难方法一个 Azure WebApp。
所以现在我需要重新构建它。谁能推荐我正确的节点 library/libraries 在磁盘上而不是在内存中进行压缩和解压缩?
(zip 文件格式不是硬性要求,因此如果有任何其他文件格式对此更好,我愿意接受建议!)
我会看看 Archiver JS,它非常强大,允许 .zip 文件的流接口,例如:
const fs = require('fs');
const archiver = require('archiver');
const zipFile = archiver('zip', { zlib: { level: 9 }});
zipFile.on('warning', error => {
console.log('warning:', error)
});
zipFile.on('error', error => {
console.error('error occurred :', error)
});
const writeStream = fs.createWriteStream(__dirname + '/test.zip');
zipFile.pipe(writeStream);
// Append test file
zipFile.append(fs.createReadStream('file1.txt'), { name: 'file_1.txt' });
// Append another file...
zipFile.append(fs.createReadStream('file2.txt'), { name: 'file_2.txt' });
zipFile.finalize();
我需要创建一个包含大约 1GB 数据的 zip 文件(但这个数量在未来会增加)。最初我用 AdmZip 构建它,但由于我们的 VM 没有大量内存,(它也不需要它,除非它正在创建这个 zip 文件,所以我不想扩大规模),它运行内存不足并崩溃。
然后我重建了进程以使用命令行 zip
,但是在完成所有设置并发布到服务器之后,我不得不找出该命令不可用的困难方法一个 Azure WebApp。
所以现在我需要重新构建它。谁能推荐我正确的节点 library/libraries 在磁盘上而不是在内存中进行压缩和解压缩?
(zip 文件格式不是硬性要求,因此如果有任何其他文件格式对此更好,我愿意接受建议!)
我会看看 Archiver JS,它非常强大,允许 .zip 文件的流接口,例如:
const fs = require('fs');
const archiver = require('archiver');
const zipFile = archiver('zip', { zlib: { level: 9 }});
zipFile.on('warning', error => {
console.log('warning:', error)
});
zipFile.on('error', error => {
console.error('error occurred :', error)
});
const writeStream = fs.createWriteStream(__dirname + '/test.zip');
zipFile.pipe(writeStream);
// Append test file
zipFile.append(fs.createReadStream('file1.txt'), { name: 'file_1.txt' });
// Append another file...
zipFile.append(fs.createReadStream('file2.txt'), { name: 'file_2.txt' });
zipFile.finalize();