因为要做阿里云 oss 文件批量压缩下载 目前 OSS 文件已经下载为 Buffer 数据
但是目前好像没有找到方法能 gzip 压缩多个文件
const result = data['source-files'].map(item=>client.get(item))
Promise.all(result).then(res=>{
resp.setHeader('content-type', 'gzip');
resp.send(Buffer.from(zlib.gzipSync(res[0].content)))
},err=>{
resp.send('fail');
}).catch(err=>{
resp.send('fail');
})
另外,下载下来的 GZIP 里的文件名也没有找到方法可以定义,求问有没有老哥有这方面经验的
1
yyfearth 2022-01-19 16:33:14 +08:00
gzip 本来就不是压缩多个文件用的
gzip 不是 zip 文件格式 只能压缩单个文件或者 Buffer/流 如果要压缩多个文件 一般先 tarball 打包 然后再 gzip 如果不想按照 tar 来打包 你也可以自己打包多个文件 比如直接把所有 buffer 拼接在一起再 gzip 然后存一下文件名和 offset 就好 |
4
ysc3839 2022-01-19 20:04:55 +08:00 via Android
建议一步到位用 tar+xz 或者 tar+zstd
|
5
yyfearth 2022-01-20 07:45:17 +08:00 1
|