2011-10-03 9 views
8

लिखने के लिए फैराडे रूबी मणि का उपयोग करना:जब <a href="https://github.com/technoweenie/faraday" rel="noreferrer">Faraday</a> मणि का उपयोग कर इस तरह एक छवि के लिए एक यूआरएल को हिट करने के लिए छवि डाउनलोड करने और डिस्क

http_conn = Faraday.new do |builder| 
    builder.adapter Faraday.default_adapter 
end 
response = http_conn.get 'http://example.tld/image.png' 

आप डिस्क पर फैराडे प्रतिक्रिया से छवि फ़ाइल कैसे लिख सकता है?

response.body विशेषता को डिबग करने से यह बाइनरी डेटा दिखाता है।

किसी भी मदद की बहुत सराहना की।

उत्तर

11

क्यों नहीं response.body किसी अन्य फ़ाइल की तरह क्यों लिखें?

File.open('image.png', 'wb') { |fp| fp.write(response.body) } 
+4

प्रतिक्रिया शरीर बड़ा होने पर क्या होता है? ऐसा लगता है कि फ़ाइल में लिखे जाने से पहले पूरे शरीर को स्मृति में पढ़ा जाता है - यह भाग में फाइल को लिखने में सक्षम होना अच्छा होगा। –

+0

@ जेपी। क्या यह फैराडे नहीं है जो पूरी छवि को स्मृति में फिसल रहा है? या आप पूछ रहे हैं कि इसे फैराडे को कैसे स्ट्रीम किया जाए? –

+1

बिल्कुल, हाँ, मैं सोच रहा हूं कि फैराडे को शरीर को स्ट्रीम करने का कोई तरीका है या नहीं। मैं HTTP बाइट श्रेणियों का उपयोग कर एक HTTP आईओ कक्षा को लागू करने के लिए देख रहा हूं, इसलिए मैं पूरी चीज को पुनर्प्राप्त किए बिना बड़े ज़िप संग्रह के भीतर से एक छोटी फ़ाइल पुनर्प्राप्त कर सकता हूं (रूबी ज़िप फ़ाइल IO ऑब्जेक्ट्स के साथ वही कर सकता है और केवल ज़िप केंद्रीय निर्देशिका और अनुरोधित सामग्री को पढ़ना) –

संबंधित मुद्दे

 संबंधित मुद्दे