【问题标题】:NodeJS: create zip, but on disk, not in memoryNodeJS:创建 zip,但在磁盘上,而不是在内存中
【发布时间】:2021-08-09 17:45:20
【问题描述】:

我需要创建一个包含大约 1GB 数据的 zip 文件(但这个数量在未来会增加)。最初我使用 AdmZip 构建了它,但由于我们的 VM 没有大量内存(它也不需要它,除非它在创建这个 zip 文件时,所以我不想扩大规模),它运行内存不足并崩溃。

然后我重建了该过程以使用命令行zip,但在完成所有设置并发布到服务器之后,我不得不找出该命令在 Azure WebApp 上不可用的困难方式。

所以现在我需要再次重建它。谁能推荐我正确的节点库/库来在磁盘上而不是在内存中进行压缩和解压缩?

(zip 文件格式不是硬性要求,所以如果有任何其他文件格式对此更好,我愿意接受建议!)

【问题讨论】:

标签: node.js zip unzip


【解决方案1】:

我想看看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();

完整的文档在这里: https://www.archiverjs.com/docs/archiver

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2015-05-10
    • 2020-09-25
    • 1970-01-01
    • 2011-06-08
    • 2015-08-06
    相关资源
    最近更新 更多