Показать прогресс на node.js child_process.exec? - PullRequest
3 голосов
/ 03 марта 2012

Я недавно спросил / принял ответ на вопрос, который у меня был ранее: Как я могу скопировать функциональность wget с помощью nodejs .

Теперь мой скрипт работает отлично, но я бы хотел показать пользователю процент загруженных файлов. Я не уверен, что это подвергается нам (я не видел это в документах), но я решил спросить здесь в любом случае. Хотелось бы помочь!

Спасибо!

1 Ответ

7 голосов
/ 03 марта 2012

Да, вы можете. С child_process.spawn. В то время как child_process.exec выполняет команду и буферизирует вывод, spawn выдает события на data, error и end. Таким образом, вы можете слушать это и рассчитывать свой прогресс. Базовый пример в документе для узла spawn .

Обновление: Я видел ваш другой вопрос. Для этого вы можете использовать wget, но я рекомендую вместо этого модуль nodejs request . Вот как можно получить файл с запросом:

var request = require("request");

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

Если вы хотите отслеживать прогресс, вы передаете обратный вызов 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
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...