【发布时间】:2012-03-21 10:40:25
【问题描述】:
我最近询问/接受了我之前提出的问题的答案:How can I replicate the functionality of a wget with nodejs。
现在,我的脚本运行良好,但我希望能够向用户显示下载的百分比。我不确定这是否暴露给我们(我在文档中没有看到),但我想我还是会在这里问。希望得到一些帮助!
谢谢!
【问题讨论】:
标签: javascript node.js
我最近询问/接受了我之前提出的问题的答案:How can I replicate the functionality of a wget with nodejs。
现在,我的脚本运行良好,但我希望能够向用户显示下载的百分比。我不确定这是否暴露给我们(我在文档中没有看到),但我想我还是会在这里问。希望得到一些帮助!
谢谢!
【问题讨论】:
标签: javascript node.js
是的,你可以。与child_process.spawn。当child_process.exec 执行命令并缓冲输出时,spawn 为您提供data、error 和end 上的事件。因此,您可以聆听并计算您的进度。 node docs for 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
});
【讨论】: