1

我正在编写一个模块,使用 mikeal 的请求在管道传输时上传和下载文件,如何监听事件以使用进度条显示进度,请给我一些示例,谢谢...

4

1 回答 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 回答