如何解压缩使用https请求的文件



我正在尝试获取并解压缩位于此处的文件:https://donnees.roulez-eco.fr/opendata/jour

我尝试了一些事情和资源,包括这次讨论,但我不明白我做错了什么。

该文件是一个zip文件,里面有一个XML文件。我的目标是获取XML数据。下面是我正在尝试的代码,但一直收到这个错误:

错误:标头检查不正确在Zlib.zlibOnError〔as oneror〕(Zlib.js:181:17({错误号:-3,代码:"Z_DATA_ERROR"}

const https = require('https');
const zlib = require('zlib');
// https get file from url
const getFile = url => {
const httpOptions = {
headers: {
'accept-encoding': 'gzip,deflate',
},
};
return new Promise((resolve, reject) => {
https
.get(url, httpOptions, res => {
let data = [];
res.on('data', chunk => {
data.push(chunk);
});
res.on('end', () => {
console.log(`headers: ${JSON.stringify(res.headers, null, 2)}`);
resolve(Buffer.concat(data));
});
})
.on('error', e => {
console.log('https.get error');
reject(e);
});
});
};
// unzip buffer from getFile
const unzipBuffer = buffer => {
console.log(`trying to unzip blob of size ${buffer.length}`);
return new Promise((resolve, reject) => {
zlib.gunzip(buffer, (err, buffer) => {
if (err) {
console.log('unzipping error');
reject(err);
} else {
console.log('unzipping success');
resolve(buffer);
}
});
});
};
(async () => {
const timer = new Timer();
try {
const file = await getFile('https://donnees.roulez-eco.fr/opendata/jour');
const unzipped = await unzipBuffer(file);
console.log(`unzipped file of size ${unzipped.length}`);
} catch (err) {
console.log(err);
} 
})();

此外,这些是我得到的标题:

headers: {
"date": "Fri, 03 Dec 2021 12:51:39 GMT",
"content-type": "application/zip",
"content-length": "1201261",
"content-disposition": "attachment;filename="PrixCarburants_quotidien_20211202.zip"",
"last-modified": "Thu, 02 Dec 2021 23:24:14 GMT",
"content-security-policy": "default-src https: 'unsafe-eval' 'unsafe-inline'; object-src https: ; child-src https: platform.twitter.com; img-src https: data:",
"strict-transport-security": "max-age=34560000; includeSubDomains",
"x-request-id": "246579460",
"cache-control": "max-age=300",
"x-cdn-pop": "rbx1",
"x-cdn-pop-ip": "51.254.41.128/25",
"x-cacheable": "Cacheable",
"accept-ranges": "bytes",
"connection": "close"
}

非常感谢所有的帮助

看起来您所拥有的是一个zip文件。zlib将只解码gzip或zlib流。

最新更新