1

我想将 node.js 中的 utf-8 缓冲区压缩为 gzip 存档中的“文件”。zlib 页面上似乎没有任何关于如何执行此操作的文档,并且从我到目前为止发现的内容中没有关于堆栈溢出的见解。最后,我实际上并不想将文件写入文件系统,而只是将数据作为 HTTP 请求发送。如果有人知道如何实现这一点(zlib 是否已经支持它,或者是否有一个包可以做到这一点),那将是一个很大的帮助!

只是为了弄清楚这是为了什么,这是通过 HTTP 将 Dockerfile(以字符串形式)发送到 docker 实例以用于构建映像命令。

谢谢!

4

2 回答 2

0

没有“gzip 存档”之类的东西。gzip 格式仅存储单个流或文件。您是指压缩后的 tar 格式 (.tar.gz) 吗?

zlib 当然支持在内存中写入 gzip 流。使用deflateInit2() windowBits参数,您可以请求 gzip 格式。请参阅zlib.h

我没有使用过 node.js,所以我不知道它呈现给 zlib 的什么前端。

于 2013-11-04T16:14:24.093 回答
0

我将其保留在这里以供将来参考:

import { promises as fs } from 'fs'
import { gzip } from 'zlib'
import { promisify } from 'util'
const gzipPromise = promisify(gzip)

async function main (filename) {
     // fs returns buffer
     const data = await fs.readFile(filename)
     const gzippedData = await gzipPromise(data)
     await fs.writeFile(`${filename}.gz`, gzippedData)

}
于 2022-02-02T08:53:32.120 回答