最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Show progress on node.js child_process.exec? - Stack Overflow

programmeradmin0浏览0评论

I recently asked/accepted an answer to a question I had earlier: How can I replicate the functionality of a wget with nodejs.

Now, my script is functioning perfectly, but I'd like to be able to show the user the percentage that's downloaded. I'm not sure if that's exposed to us (I didn't see it in the docs), but I figured I'd ask here anyways. Would love some help!

Thanks!

I recently asked/accepted an answer to a question I had earlier: How can I replicate the functionality of a wget with nodejs.

Now, my script is functioning perfectly, but I'd like to be able to show the user the percentage that's downloaded. I'm not sure if that's exposed to us (I didn't see it in the docs), but I figured I'd ask here anyways. Would love some help!

Thanks!

Share Improve this question edited May 23, 2017 at 11:50 CommunityBot 11 silver badge asked Mar 2, 2012 at 23:00 ConnorConnor 4,1688 gold badges37 silver badges52 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 8

Yes, you can. With child_process.spawn. While child_process.exec executes the mand and buffers the output, spawn gives you events on data, error and end. So you can listen to that and calculate your progress. There's a basic example in the node docs for spawn.

Update: I saw your other question. You can use wget for this, but I remend the nodejs module request instead. Here's how to fetch the file with request:

var request = require("request");

request(url, function(err, res, body) {
  // Do funky stuff with body
});

If you want to track progress, you pass a callback to 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
});
发布评论

评论列表(0)

  1. 暂无评论