gpt4 book ai didi

javascript - node.js 压缩 ZIP 到内存

转载 作者:数据小太阳 更新时间:2023-10-29 05:24:48 31 4
gpt4 key购买 nike

我想将一些数据压缩到一个可写流中。

目的是在内存中完成所有操作,而不是在磁盘上创建实际的 zip 文件。

仅出于测试目的,我在磁盘上创建了一个 ZIP 文件。但是,当我尝试打开 output.zip 时,出现以下错误:“存档格式未知或已损坏”。 (Windows 7 上的 WinZip 和 MAC 上的类似错误)

我做错了什么?

const   fs = require('fs'),
archiver = require('archiver'),
streamBuffers = require('stream-buffers');

let outputStreamBuffer = new streamBuffers.WritableStreamBuffer({
initialSize: (1000 * 1024), // start at 1000 kilobytes.
incrementAmount: (1000 * 1024) // grow by 1000 kilobytes each time buffer overflows.
});

let archive = archiver('zip', {
zlib: { level: 9 } // Sets the compression level.
});
archive.pipe(outputStreamBuffer);

archive.append("this is a test", { name: "test.txt"});
archive.finalize();

outputStreamBuffer.end();

fs.writeFile('output.zip', outputStreamBuffer.getContents(), function() { console.log('done!'); });

最佳答案

您不是在等待内容写入输出流。

从您的代码中注释掉 outputStreamBuffer.end(); 并将其更改为以下...

outputStreamBuffer.on('finish', function () {
fs.writeFile('output.zip', outputStreamBuffer.getContents(), function() {
console.log('done!');
});
});

关于javascript - node.js 压缩 ZIP 到内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240709/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com