2014-06-26 50 views
0

如何使用node.js從HTTP資源中提取ZIP文件?如何使用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); 
    } 
}) 

錯誤:

Error: End of data reached (data length = 230973, asked index = 261475). Corrupted zip ?

回答

1

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例如在頁面的底部)。