NodeJS获取流文件下载的字节数

时间:2017-04-21 16:28:59

标签: javascript node.js download stream

在此代码中,我从网址流式传输文件并将其保存到文件中。有没有办法管理它通过计算管道传输的字节数? (这会告诉我文件大小。)

  request.stream(url)
    .pipe(outputFile)

是否有一些库会通过管道下载来实现这一点,或者我自己做一个简单的方法?

1 个答案:

答案 0 :(得分:3)

你可以使用request库这样做:

const request = require('request');
const fs = require('fs');

var downloaded = 0;
request.get(url)
  .on('data', function(chunk){
    downloaded += chunk.length;
    console.log('downloaded', downloaded);
  })
  .pipe(fs.createWriteStream(fileName));

此外,您可以查看this link,了解如何在没有request包的情况下执行此操作。

更新#1(Pure NodeJS解决方案)

var http = require('http');
var fs = require('fs');

var download = function(url, dest, cb) {
  var file = fs.createWriteStream(dest);
  var downloaded = 0;
  var request = http.get(url, function(response) {
    response.pipe(file);
    response.on('data', function(chunk){
      downloaded += chunk.length;
      console.log(downloaded);
    })
    file.on('finish', function() {
      file.close(cb);
    });
  });
}