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 フラグを使用すると-#、「データ」イベントがトリガーされるたびに進捗率を取得できます。

于 2012-07-05T13:48:17.850 に答える