【问题标题】:Node.js zlib gzip buffer as "file" inside of archiveNode.js zlib gzip 缓冲区作为存档内的“文件”
【发布时间】:2022-02-02 16:53:57
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: node.js buffer gzip zlib docker


    【解决方案1】:

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

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

    我没有用过node.js,所以不知道它在zlib的前面是什么。

    【讨论】:

      【解决方案2】:

      我把这个留在这里以备将来参考:

      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)
      
      }
      

      【讨论】:

        猜你喜欢
        • 2018-09-12
        • 1970-01-01
        • 2017-12-24
        • 1970-01-01
        • 2019-06-14
        • 2021-09-03
        • 1970-01-01
        • 2017-11-24
        • 2013-01-10
        相关资源
        最近更新 更多