使用 node 提供的`gzip`为什么压缩表格的结果会是一个文件夹(txt 文本没有这个问题)?
資深大佬 : KouShuiYu 5
gzip
async function zipBuffer(payload) { return new Promise((res, rej) => { gzip(payload, (err, buffer) => { if (err) { rej(err); } res(buffer); }); }); }
使用archiver没这个问题,就是没办法直接压缩到 buffer,需要先生成压缩文件再读取,感觉绕了一个圈子
function zipBuffer(buffer, outputName) { return new Promise((res, rej) => { const outputPath = `./temp_data/_${getToken()}.zip`; const output = fs.createWriteStream(outputPath); const archive = archiver('zip', { zlib: { level: 9 }, }); archive.pipe(output); archive.append(buffer, { name: outputName }); archive.finalize(); output.on('close', async function () { const zipBuffer = await streamToBuffer(fs.createReadStream(outputPath)); await unlinkFile(outputPath); res(zipBuffer); }); output.on('error', async function (err) { rej(err); }); }); }
大佬有話說 (1)