2010-04-03 12 views
6

मैं एक रेल नियंत्रक बनाना चाहता हूं जो वेब से jpg फ़ाइलों की एक सेरी डाउनलोड करता है और सीधे उन्हें डेटाबेस में बाइनरी के रूप में लिखता है (मैं नहीं हूं अपलोड फॉर्म करने का प्रयास कर रहे हैं)रेल: http से फ़ाइल डाउनलोड करने और उसे डेटाबेस में सहेजने के लिए कैसे करें

ऐसा करने के तरीके पर कोई सुराग?

धन्यवाद

संपादित करें: यहाँ कुछ कोड मैं पहले से ही लगाव फू मणि का उपयोग कर लिखा है:

http = Net::HTTP.new('awebsite', 443) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
http.start() { |http| 
    req = Net::HTTP::Get.new("image.jpg") 
    req.basic_auth login, password 
    response = http.request(req) 
    attachment = Attachment.new(:uploaded_data => response.body) 
    attachement.save 
} 

और मैं एक "# के लिए अपरिभाषित विधि` content_type ' "त्रुटि मिलती है

उत्तर

6

फ़ाइलों को पकड़ने के लिए open-url (रूबी स्टडीलिब में) का उपयोग करें, फिर paperclip जैसे मणि का उपयोग करें ताकि उन्हें डीबी में अपने मॉडलों के अनुलग्नक के रूप में स्टोर किया जा सके।

अद्यतन:

Attachment_fu कच्चे बाइट्स को स्वीकार नहीं करता है, यह एक "फ़ाइल की तरह" वस्तु की जरूरत है। छवि को अस्थायी फ़ाइल में डंप करने के लिए नीचे दिए गए कोड के साथ this example of a LocalFile का उपयोग करें और फिर इसे अपने मॉडल पर भेजें।

http = Net::HTTP.new('www.google.com') 
    http.start() { |http| 
    req = Net::HTTP::Get.new("/intl/en_ALL/images/srpr/logo1w.png") 
    response = http.request(req) 
    tempfile = Tempfile.new('logo1w.png') 
    File.open(tempfile.path,'w') do |f| 
     f.write response.body 
    end 
    attachment = Attachment.new(:uploaded_data => LocalFile.new(tempfile.path)) 
    attachement.save 
    } 
+0

धन्यवाद, मैंने पहले से ही एक और मणि के साथ कोशिश की है, लेकिन सफल नहीं हुआ। – Chris

+0

'content_type' से ऊपर मेरा नमूना कोड अपरिभाषित है क्योंकि attachement_fu फ़ाइल की अपेक्षा करता है, बाइट्स की स्ट्रीम नहीं। मैंने कुछ जवाब के साथ अपना जवाब अपडेट कर लिया है। –

+0

धन्यवाद, यह काम करता है :) – Chris

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

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