node.js将http响应写入流

时间:2012-08-10 17:02:59

标签: javascript http node.js stream request

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

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

现在输出文件已创建但文件大小为0.但是网址是正确的,我用wget验证了。

提前致谢&最好的问候

3 个答案:

答案 0 :(得分:21)

http.request的回调仅提供一个参数,该参数是对请求的response的引用。尝试

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

另请注意ClientResponse实施ReadableStream,因此您应使用.pipe而不是.socket.pipe

答案 1 :(得分:6)

我假设request来自mikeal的请求库,而不是http.request的实例。在这种情况下,您只需执行request(url).pipe(writeStream);

即可

请记住,出于调试目的,您始终可以管道process.stdout

答案 2 :(得分:3)



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