我打开curl在后台下载一些ISO,并通知客户进度。由于 curl、wget 和许多其他清除输出。我希望在浏览器上看到 curl 的输出。我无法完全通过管道传输它,因为浏览器无法理解,它基本上是通过 ncurses 或我不知道的东西更改输出数据。我该如何解决这个问题?
var spawn = require('child_process').spawn,
curl = spawn('curl', ['-oubuntu.iso','http://releases.ubuntu.com/10.04/ubuntu-10.04.4-desktop-i386.iso']);
curl.stderr.pipe(process.stdout); // Works perfectly:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
1 694M 1 13.5M 0 0 2193k 0 0:05:24 0:00:06 0:05:18 2439k
但process.on("data")
不一致,随机数改变新行等。
好吧,process.stderr.on('data')实际上正在产生正确的数据,所以说它不一致是错误的。
似乎 curl 只是使用进程的 stderr 流更新进度状态的更改部分,这就是为什么每次触发事件时都会获得不同的数据。
我找不到解决方法(检查 http://curl.haxx.se/docs/manpage.html),您显然无法告诉 curl 以"原始"方式报告进度。
提示:使用 curl 标志-#
时,每次触发"data"事件时,您都会获得进度百分比。