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
添加回答
舉報