2012-07-05 142 views
2

我打开curl在后台下载一些ISO并通知客户有关进度。自卷曲,wget和其他许多人清楚输出。我想要在浏览器中看到curl的输出。我不能完全管它,因为浏览器不明白,它基本上是通过ncurses或者我不知道的东西来改变输出数据。我该如何解决这个问题?管道流输出到NodeJS中的Socket.IO

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")并不一致,随机数发生变化的新线等。

+0

这个问题太含糊 – ControlAltDel 2012-07-05 13:41:05

回答

1

好,process.stderr.on(“数据”)实际上是产生正确的数据,所以说这是不相符是错的。

似乎curl只是使用进程的stderr流更新进度状态的变化部分,这就是为什么每次事件触发时都会得到不同的数据。

我找不到解决方法(检查http://curl.haxx.se/docs/manpage.html),您显然无法告诉curl以“原始”方式报告进度。

提示:使用卷动标志-#时,每次触发'data'事件时都会获得百分比进度。

+0

使用 - #可以帮助很多,谢谢!我知道输出是正确的,但不一致是错误的词,它应该是无意义的 - 太多的终端外:) – Mustafa 2012-07-05 14:24:11