3 回答
TA贡献1826条经验 获得超6个赞
要使用zlib解压缩gzip格式文件,请inflateInit2
使用windowBits
参数调用16+MAX_WBITS
,如下所示:
inflateInit2(&stream, 16+MAX_WBITS);
如果你不这样做,zlib会抱怨一个糟糕的流格式。默认情况下,zlib使用zlib标头创建流,并且在inflate不会识别不同的gzip标头,除非您这样说。虽然从头文件的1.2.1版开始记录了这一点zlib.h
,但它不在zlib手册中。从头文件:
windowBits
对于可选的gzip解码,也可以大于15。添加32以windowBits
使用自动标头检测启用zlib和gzip解码,或添加16以仅解码gzip格式(zlib格式将返回aZ_DATA_ERROR
)。如果正在解码gzip流,strm->adler
则是crc32而不是adler32。
TA贡献1790条经验 获得超9个赞
Node.js的
const { gunzip } = require('zlib');
const decompressGzip = compressedData =>
new Promise((resolve, reject) => {
gunzip(compressedData, (error, decompressedData) => {
if (error) return reject(error);
return resolve(decompressedData);
});
});
module.exports = { decompressGzip };
你zlib用纱线安装
yarn add zlib
添加回答
举报