2012-08-10 4 views
17

에 쓰십시오. HTTP를 통해 일부 바이너리 데이터를 가져옵니다. 내 코드는 다음과 같습니다.node.js http 응답을 스트림

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

이제 출력 파일이 생성되지만 파일 크기는 0입니다. URL은 정확하지만 wget으로 확인했습니다. 사전 & 안부에서

덕분에

답변

18

http.request에 대한 콜백은 요청의 response에 대한 참조입니다 하나 개의 인수를 제공합니다.

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

는 또한 ClientResponseReadableStream를 구현 유의하십시오, 그래서 당신은 .pipe보다는 .socket.pipe 사용해야합니다.

6

여기서 requesthttp.request의 인스턴스가 아니라 mikeal의 요청 라이브러리에서 온 것으로 가정합니다. 이 경우 간단히 수행 할 수 있습니다 request(url).pipe(writeStream);

디버깅을 위해 항상 process.stdout으로 파이프 할 수 있습니다.

+0

감사합니다. stdout에 매우 유용한 팁 –

3

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

+2

당신은 당신이 제안하는 것처럼 반대가 아닌 쓰기 가능으로만 읽을 수있는 파이프를 연결할 수 있습니다. – Salketer

관련 문제