2014-09-29 39 views
2

我正在從Paperclip移動到CarrierWave和Cloudinary,我想將我之前在S3上的所有圖像存儲移到Cloudinary。CarrierWave/Cloudinary給出一個URL上傳圖像

我目前的做法是這樣:

my_model.cloudinary_logo = open(my_model.logo.url) 
my_model.save 

但這種力量我要下載的文件,然後上傳到cloudinary,我不能只是給它的網址呢?

另一種方法是這樣做的:

cloudinary_uploaded_file = Cloudinary::Uploader.upload(my_model.logo.url) 
my_model.write_attribute :c_image, "v#{cloudinary_uploaded_file['version']}/#{cloudinary_uploaded_file['public_id']}.#{cloudinary_uploaded_file['format']}" 

但是,這在我看來是一個小哈克......

+0

在他們的GitHub頁面尋找,似乎你只需要在模型上設置了'attribute_name_here_url'。 – jcm 2014-09-30 13:13:37

+0

你在哪頁上找到了那個? – 2014-09-30 13:14:27

+0

有一個「從遠程位置上傳文件」部分。 https://github.com/carrierwaveuploader/carrierwave – jcm 2014-09-30 13:24:19

回答

0

正如在評論中提到JCM,我們可以使用:remote_attribute_url。就那麼簡單! 因此,代碼變爲:

my_model.remote_c_image_url = my_model.logo.url 
my_model.save 
+0

很高興知道。你可以接受你自己的答案。 :) – jcm 2014-09-30 23:27:43

+0

謝謝!在做之前,我只需稍等一下。 – 2014-10-02 12:25:55

+0

但是我們如何使用carrierwave + cloudinary來使用它 – Apoorv 2017-12-08 21:02:45