Node.js zlib解压报incorrect header check错误求助
问题:zlib压缩Buffer直接存入varbinary列后解压报错「incorrect header check」
我数据库里有个varbinary类型的jsonBin列,打算存储经zlib压缩后的JSON字符串。zlib.gzipSync或zlib.deflateSync会返回Buffer对象,用base64编码后存储能正常解压,但直接存Buffer不编码时,解压就会抛出「incorrect header check」错误。我需要最小化传输数据长度,不想用base64,而且已经确认数据在数据库里存储正常。
无效代码示例
const zip = zlib.gzipSync(JSON.stringify(input)); // 存储zip到数据库的代码 // 从数据库检索zip返回zipBuffer的代码 const originalObj = JSON.parse(zlib.unzipSync(Buffer.from(zipBuffer)));
有效代码示例
const zip = zlib.gzipSync(JSON.stringify(input), 'base64'); // 存储zip到数据库的代码 // 从数据库检索zip返回zipBuffer的代码 const originalObj = JSON.parse(zlib.unzipSync(Buffer.from(zipBuffer)),'base64');
错误堆栈追踪
(注:未提供具体堆栈内容)
已尝试的排查方案
- 直接存储Buffer或转为字节数组到
jsonBin列 - 检索后确认得到的是Buffer对象(即使存的是字节数组)
- 分别尝试用
zlib.inflateSync和zlib.unzipSync进行解压
恳请帮忙排查问题原因。
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

