http経由でいくつかのバイナリデータをフェッチしています。私のコードは次のようになります:
var writeStream = fs.createWriteStream(fileName);
request(url, function(err, res) {
res.socket.pipe(writeStream);
});
これで出力ファイルが作成されますが、ファイルサイズは0です。URLは正しいですが、wgetで確認しました。
よろしくお願いします。
http.request
のコールバックは、リクエストの response への参照である1つの引数のみを提供します。試す
http.request(url, function(res) {
res.pipe(writeStream);
});
また、ClientResponse
は ReadableStream
を実装するため、.pipe
ではなく.socket.pipe
を使用する必要があります。
ここでrequest
は_http.request
_のインスタンスではなく、mikealのリクエストライブラリからのものであると想定しています。その場合は、単純にrequest(url).pipe(writeStream);
を実行できます
デバッグの目的で、常に_process.stdout
_にパイプできることを覚えておいてください。
var readStream = fs.createReadStream(fileName);
request(url, function(err, res) {
readStream.pipe(res);
readStream.on('end', function() {
//res.end({"status":"Completed"});
});
});