node.js写入http响应stream

我通过http获取一些二进制数据。 我的代码如下所示:

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

现在输出文件被创build,但文件大小为0. url是正确的,但我用wgetvalidation。

在此先感谢和最好的问候

http.request的callback只提供一个参数,它是对请求响应的引用。 尝试

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

另外请注意, ClientResponse实现ReadableStream ,所以你应该使用.pipe而不是.socket.pipe

我假设这里的request来自mikeal的请求库,而不是http.request的一个实例。 在这种情况下,你可以简单地做request(url).pipe(writeStream);

记住,为了debugging的目的,你总是可以pipe道到process.stdout

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