2012-08-10 10 views
17

स्ट्रीम करने के लिए http प्रतिक्रिया लिखें मैं http पर कुछ बाइनरी डेटा ला रहा हूं। मेरे कोड लगता है:node.js स्ट्रीम

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

अब आउटपुट फ़ाइल बनाई गई है लेकिन फ़ाइल आकार 0. है यूआरएल हालांकि सही है, मैं wget के साथ सत्यापित है कि।

अग्रिम & सादर धन्यवाद

उत्तर

18

http.request के लिए कॉलबैक केवल एक ही तर्क है, जो अनुरोध के response लिए एक संदर्भ है आपूर्ति करती है।

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

भी ध्यान रखें कि ClientResponse लागू करता ReadableStream प्रयास करें, ताकि आप .pipe बजाय .socket.pipe उपयोग करना चाहिए।

6

मुझे लगता है कि requesthttp.request का उदाहरण होने के बजाय माइकल की अनुरोध लाइब्रेरी से है। 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