我尝试使用节点中的http模块下载文件。虽然文件似乎成功下载,但无法使用gzip打开生成的文件。我尝试通过其他方法下载文件,并且可行,并且我尝试使用多种方法打开生成的gzip文件,但所有这些都会产生相同的错误。
我确实试图使用请求模块,但在文件下载完成之前似乎无法访问返回的HTTP标头,这是我需要的,因为我想提供某种视觉指示器作为这个文件需要多长时间才能下载。
这是(大致)我到目前为止所获得的代码。
var http = require('http');
var fs = require('fs');
var progress = 0;
downloadFile = function() {
http.get(FILE_URL, function(response) {
var maxBytes = parseInt(response.headers['content-length'], 10);
var dumpFile = fs.createWriteStream(FILENAME + '.dl');
response.pipe(dumpFile);
response
.on('data', function(chunk) {
progress += chunk.length;
// progressbar-type code here
})
.on('end', function() {
// pass
})
dumpFile.on('finish', function() {
dumpFile.close();
fs.rename(FILENAME + '.dl', FILENAME);
});
}
所以我的问题:您如何建议我下载文件,请记住它是一个大文件,我需要某种可视指示器来下载进度?我应该放弃http吗?或者我做了一些非常愚蠢的事情?
谢谢!