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

use*_*159 2 javascript download stream node.js

在这段代码中,我从URL流式传输文件并将其保存到文件中。是否有一种方法也可以通过某种方式对它进行管道传输,以计算管道传输的字节数?(这会告诉我文件的大小。)

  request.stream(url)
    .pipe(outputFile)
Run Code Online (Sandbox Code Playgroud)

是否有一些库可以通过下载通过下载的库来做到这一点,或者我自己做一个简单的方法呢?

Dan*_*tir 6

您可以使用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));
Run Code Online (Sandbox Code Playgroud)

另外,您可以检查此链接以了解如何不带request包装地进行操作。

更新#1(纯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);
    });
  });
}
Run Code Online (Sandbox Code Playgroud)