如何使用node.js从HTTP资源中提取ZIP文件

How to extract a ZIP file from a HTTP resource with node.js

本文关键字:提取 ZIP 文件 资源 HTTP 何使用 node js      更新时间:2023-09-26

如何使用node.js从HTTP资源中提取ZIP文件?

我尝试了下面的代码,但得到一个错误,表明ZIP文件可能已损坏(它不是):

require('node-zip');
var request = require('request');
request('http://data.geo.admin.ch.s3.amazonaws.com/ch.meteoschweiz.swissmetnet/data.zip', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(new JSZip(body, {base64: false, checkCRC32: true}).files);
  }
})
错误:

错误:End of data reached (data length = 230973, requested index = .261475)。zip文件损坏?

request试图将内容解码为文本,从而破坏您的数据。尝试输入:

request({
  method : "GET",
  url : "http://data.geo.admin.ch.s3.amazonaws.com/...",
  encoding: null // <- this one is important !
}, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(new JSZip(body).files);
    // handle error
    return;
  }
});

参见http://stuk.github.io/jszip/documentation/howto/read_zip.html(页面底部的request示例)。