我正在编写一个模块,使用 mikeal 的请求在管道传输时上传和下载文件,如何监听事件以使用进度条显示进度,请给我一些示例,谢谢...
问问题
1265 次
1 回答
1
我在 NPM 注册表上快速搜索并找到了progress,这是一个在命令行中显示进度条的模块。它看起来不错,甚至还有一个示例显示如何使用它来显示下载进度。我在这里复制它:
var ProgressBar = require('progress')
, https = require('https');
var req = https.request({
host: 'download.github.com'
, port: 443
, path: '/visionmedia-node-jscoverage-0d4608a.zip'
});
req.on('response', function(res){
var len = parseInt(res.headers['content-length'], 10);
console.log();
var bar = new ProgressBar(' downloading [:bar] :percent :etas', {
complete: '='
, incomplete: ' '
, width: 20
, total: len
});
res.on('data', function(chunk){
bar.tick(chunk.length);
});
res.on('end', function(){
console.log('\n');
});
});
req.end();
上面的代码将生成一个如下所示的进度条:
downloading [===== ] 29% 3.7s
请注意他如何检查content-length
标题以获取正在下载的文件的长度并使用它来计算完成百分比。然后它将每个块的长度传递给进度条。
于 2012-09-05T14:45:01.973 回答