2

我打开 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")不一致,随机数换行等。

4

1 回答 1

1

好吧, process.stderr.on('data') 实际上正在产生正确的数据,所以说它不一致是错误的。

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

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

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

于 2012-07-05T13:48:17.850 回答