Lua:如何在内存中gzip字符串(gzip,而不是zlib)?

Lua:如何在内存中gzip字符串(gzip,而不是zlib)?,lua,gzip,openresty,Lua,Gzip,Openresty,给定一个字符串,如何使用gzip在内存中压缩它?我在用Lua 这听起来是一个简单的问题,但是有一个巨大的图书馆列表。到目前为止,我所尝试的要么已经死了,要么只能生成zlib压缩字符串。在我的用例中,我需要gzip压缩,正如接收机所期望的那样 作为测试,如果将压缩字符串转储到文件中,zcat应该能够对其进行解压缩 我使用的是OpenResty,所以任何Lua库都可以 (到目前为止,我得到的唯一解决方案是将字符串转储到一个文件中,调用os.execute(“gzip/tmp/example.txt

给定一个字符串,如何使用gzip在内存中压缩它?我在用Lua


这听起来是一个简单的问题,但是有一个巨大的图书馆列表。到目前为止,我所尝试的要么已经死了,要么只能生成zlib压缩字符串。在我的用例中,我需要gzip压缩,正如接收机所期望的那样

作为测试,如果将压缩字符串转储到文件中,
zcat
应该能够对其进行解压缩

我使用的是OpenResty,所以任何Lua库都可以


(到目前为止,我得到的唯一解决方案是将字符串转储到一个文件中,调用
os.execute(“gzip/tmp/example.txt”)
并将其读回。不幸的是,这不是一个实用的解决方案。)

事实证明,zlib离gzip并不远。区别在于gzip有一个额外的头

要获取此标题,可以使用以下命令:

local zlib = require "zlib"

-- input:  string
-- output: string compressed with gzip
function compress(str)
   local level = 5
   local windowSize = 15+16
   return zlib.deflate(level, windowSize)(str, "finish")
end
说明:

  • deflate的第二个参数是窗口大小。它确保写入了gzip头。如果省略该参数,将得到一个zlib压缩字符串
  • 级别是gzip压缩级别(1=最差到9=最佳)
以下是deflate的文档(来源:):

函数流=zlib.deflate([int compression\u level],[int window\u size])


事实证明,zlib离gzip不远。区别在于gzip有一个额外的头

要获取此标题,可以使用以下命令:

local zlib = require "zlib"

-- input:  string
-- output: string compressed with gzip
function compress(str)
   local level = 5
   local windowSize = 15+16
   return zlib.deflate(level, windowSize)(str, "finish")
end
说明:

  • deflate的第二个参数是窗口大小。它确保写入了gzip头。如果省略该参数,将得到一个zlib压缩字符串
  • 级别是gzip压缩级别(1=最差到9=最佳)
以下是deflate的文档(来源:):

函数流=zlib.deflate([int compression\u level],[int window\u size])


我认为gzip==zlib,带有header@mksteve从我读到的来看,我认为你是对的。问题只是如何让库设置头header@mksteve从我读到的来看,我认为你是对的。问题只是如何让库设置标题。