在node.js child_process.exec上显示进度?

Con*_*nor 3 javascript node.js

我最近询问/接受了我之前的一个问题的答案:我如何使用nodejs复制wget的功能.

现在,我的脚本运行正常,但我希望能够向用户显示下载的百分比.我不确定这是否暴露给我们(我没有在文档中看到它),但我想我还是会在这里问.会爱一些帮助!

谢谢!

Lin*_*iel 7

是的你可以.随着child_process.spawn.尽管child_process.exec执行该命令并缓冲输出,spawn为您提供有关事件data,errorend.所以你可以听取并计算你的进度.spawn节点文档中有一个基本示例.

更新:我看到了你的另一个问题.您可以使用wget此功能,但我建议使用nodejs模块请求.以下是如何使用请求获取文件:

var request = require("request");

request(url, function(err, res, body) {
  // Do funky stuff with body
});
Run Code Online (Sandbox Code Playgroud)

如果要跟踪进度,可以将回调传递给onResponse:

function trackProgress(err, res) {
  if(err)
    return console.error(err);

  var contentLength = parseInt(res.headers["content-length"], 10),
      received = 0, progress = 0;
  res.on("data", function(data) {
    received += data.length;
    progress = received / contentLength;
    // Do funky stuff with progress
  });
}

request({url: url, onResponse: trackProgress}, function(err, res, body) {
  // Do funky stuff with body
});
Run Code Online (Sandbox Code Playgroud)