2013-06-04 8 views
29

के साथ रेल कंसोल से रिमोट फ़ाइल यूआरएल अपलोड करना मैं सिर्फ यह जानना चाहता था कि रेल कंसोल में कैरियरवेव का उपयोग करके रिमोट फाइल यूआरएल अपलोड करने के बारे में कोई कैसे जाएगा।कैरियरवेव

मैंने बिना किसी किस्मत के निम्नलिखित प्रयास किए। मुझे लगता है कि यह अपलोडर को संसाधित नहीं कर रहा है?

user = User.first 
user.remote_avatar_url = "http://www.image.com/file.jpg" 
user.save 

बहुत धन्यवाद

+1

यह सही वाक्यविन्यास है। आपका विकास.लॉग क्या कहता है? –

+1

निश्चित रूप से उपयोगकर्ता 'mounts_uploader मानता है: अवतार' –

+0

जेसी का जवाब देने के लिए धन्यवाद। मैं उपयोगकर्ता mount_uploader हूँ: अवतार, अवतारउप्लोडर। मेरे लॉग वास्तव में कुछ भी नहीं दिखाते हैं। मेरा कुछ छूट रहा है। यह ब्राउज़र के माध्यम से ठीक काम करता है। –

उत्तर

5
user = User.first 
user.remote_avatar = File.open(FILE_LOCATION) 
user.save 

FILE_LOCATION

File.join(Rails.root, '/files/png-sample.png') 

हो सकता है यदि फ़ाइल एक फ़ोल्डर 'फ़ाइलों' में पाया जाता है में रेल परियोजना

+0

सवाल यह है कि मैं एक रिमोट स्थान (एक दूरस्थ यूआरएल) से एक फाइल कैसे अपलोड कर सकता हूं। मेरे सिस्टम पर एक फाइल नहीं है। –

+1

यदि ऐसा है तो बस विधि 'user.remote_avatar_url = "www.example.com/image.jpg' विधि का उपयोग करें, कैरियरवेव बस फ़ाइल डाउनलोड करेगा और इसे आपके एप्लिकेशन पर पुनः अपलोड करेगा। –

15

'पर एक नजर डालें इस पृष्ठ पर दूरस्थ स्थान 'अनुभाग से फ़ाइलों को अपलोड करना https://github.com/carrierwaveuploader/carrierwave

CarrierWave एक त्रुटि फेंक चाहिए अगर स्थान का url अमान्य

2.1.3 :015 > image.remote_image_url = "http" 
=> "http" 
2.1.3 :016 > image.save! 
    (0.2ms) BEGIN 
    (0.2ms) ROLLBACK 
ActiveRecord::RecordInvalid: Validation failed: Image trying to download a file which is not served over HTTP 

है या अगर यह एक अज्ञात मेजबान है:

2.1.3 :017 > image.remote_image_url = "http://foobar" 
=> "http://foobar" 
2.1.3 :018 > image.save! 
    (0.4ms) BEGIN 
    (0.4ms) ROLLBACK 
ActiveRecord::RecordInvalid: Validation failed: Image could not download file: getaddrinfo: nodename nor servname provided, or not known 

कृपया ध्यान दें कि आप दूरस्थ छवियों डाउनलोड करना चाहते हैं कि आपको remote_ के साथ विशेषता को उपसर्ग करना चाहिए और

0

में दिखाया गया है:

url='http://host.domain/file.jpg'  
time=Time.now.to_i.to_s 
myfile=IO.sysopen("tmp/"+time+"_img."+url.split(".").last,"wb+") 
tmp_img=IO.new(myfile,"wb") 
tmp_img.write open(URI.encode(url)).read 

if File.exist?("tmp/"+time+"_img."+url.split(".").last) 
    "tmp/"+time+"_img."+url.split(".").last 
    image = ActionDispatch::Http::UploadedFile.new(:tempfile => tmp_img, :filename => File.basename(tmp_img)) 
else 
    image=nil 
end 
@your_model.image=image 
@your_model.save 
2

मुझे एक ही समस्या का सामना करना पड़ रहा था। और समस्या हो सकती है कि http https पर रीडायरेक्ट हो रहा है। इसलिए मैंने उन्हें gsub का उपयोग करके प्रतिस्थापित किया:

image.remote_image_url = remote_image_url.gsub('http://','https://') 
image.save! 

यह शायद समस्या को हल करना चाहिए।

0

मुझे दूरस्थ_avatar_url के साथ समस्याएं अपलोड करने या किसी भी त्रुटि को फेंकने में समस्याएं आई हैं। मेरे लिए, जहां तक ​​मैं कह सकता हूं, ऐसा इसलिए था क्योंकि मैंने अपने मॉडल में निम्नलिखित सेट किया था।

attr_accessor :remote_avatar_url 

Carrierwave आप के लिए यह शामिल किया गया है, और यद्यपि मैं क्यों, यह स्थापित करने के समझ में नहीं आता अपने आप चीजों को buggers।

+0

यदि आप ऐसा करते हैं, तो सार, 'remote_avatar_url' की वाहकवेव की घोषणा को ओवरराइट करें। – counterbeing

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