NodeJS: zlib.gunzip( body ) 错误地 returns `undefined`
NodeJS: zlib.gunzip( body ) erroneously returns `undefined`
我有一个准系统节点服务器,它解析 XML 文件(引用自用户定义的 URLs)并将操作数据输出为 CSV 文件以供下载。
我正在尝试实现可选的 GZIP 解压缩:
function loadURL(req, res) {
request.get(req.query.url, function(error, response, body) {
if (req.query.isGzip == 'true') {
zlib.gunzip(body, function(err, dezipped) {
var xmlData = dezipped.toString('utf-8');
parseAndOffload(xmlData, req, res);
});
} else {
parseAndOffload(body, req, res);
}
});
}
尽管测试 URL (http://flowercard.co.uk/google_product_feed.xml.gz) 是一个真正的 GZip 文件,有 500kb 的数据,将 GZIP 文件主体传递给 dezipped.toString('utf-8')
returns undefined
.
为什么?
很可能 body
是一个字符串,而 zlib.gunzip()
期待 stream/buffer。
尝试将 encoding: null
设置为一个选项。
encoding - Encoding to be used on setEncoding of response data. If null, the body is returned as a Buffer.
request.get(req.query.url, {encoding: null}, function(error, response, body) {
if (req.query.isGzip == 'true') {
zlib.gunzip(body, function(err, dezipped) {
var xmlData = dezipped.toString('utf-8');
parseAndOffload(xmlData, req, res);
});
} else {
parseAndOffload(body, req, res);
}
});
我有一个准系统节点服务器,它解析 XML 文件(引用自用户定义的 URLs)并将操作数据输出为 CSV 文件以供下载。
我正在尝试实现可选的 GZIP 解压缩:
function loadURL(req, res) {
request.get(req.query.url, function(error, response, body) {
if (req.query.isGzip == 'true') {
zlib.gunzip(body, function(err, dezipped) {
var xmlData = dezipped.toString('utf-8');
parseAndOffload(xmlData, req, res);
});
} else {
parseAndOffload(body, req, res);
}
});
}
尽管测试 URL (http://flowercard.co.uk/google_product_feed.xml.gz) 是一个真正的 GZip 文件,有 500kb 的数据,将 GZIP 文件主体传递给 dezipped.toString('utf-8')
returns undefined
.
为什么?
很可能 body
是一个字符串,而 zlib.gunzip()
期待 stream/buffer。
尝试将 encoding: null
设置为一个选项。
encoding - Encoding to be used on setEncoding of response data. If null, the body is returned as a Buffer.
request.get(req.query.url, {encoding: null}, function(error, response, body) {
if (req.query.isGzip == 'true') {
zlib.gunzip(body, function(err, dezipped) {
var xmlData = dezipped.toString('utf-8');
parseAndOffload(xmlData, req, res);
});
} else {
parseAndOffload(body, req, res);
}
});