20

http 経由でバイナリ データを取得しています。私のコードは次のようになります:

var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
    res.socket.pipe(writeStream);
});

出力ファイルは作成されましたが、ファイルサイズは 0 です。URL は正しいですが、wget で確認しました。

よろしくお願いいたします。

4

3 に答える 3

24

のコールバックは、リクエストのレスポンスhttp.requestへの参照である引数を 1 つだけ提供します。試す

http.request(url, function(res) {
    res.pipe(writeStream);
});

また、 をClientResponse実装しているため、ではなくReadableStreamを使用する必要があることに注意してください。.pipe.socket.pipe

于 2012-08-10T17:18:55.910 に答える
6

ここrequestは、のインスタンスではなく、mikeal のリクエスト ライブラリからのものであると想定していますhttp.request。その場合、あなたは簡単に行うことができますrequest(url).pipe(writeStream);

デバッグの目的で、いつでも にパイプできることに注意してくださいprocess.stdout

于 2012-08-10T18:27:48.380 に答える
2

var readStream = fs.createReadStream(fileName);
request(url, function(err, res) {
  readStream.pipe(res);
  readStream.on('end', function() {
    //res.end({"status":"Completed"});
  });
});

于 2014-11-10T06:37:27.870 に答える