Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to assign a remote file to Carrierwave?

Tags:

I have video model with the following definition:

class Video   require 'carrierwave/orm/activerecord'   mount_uploader :attachment, VideoUploader   mount_uploader :attachment_thumbnail, VideoThumbnailUploader   ... end 

When I upload a video file. It also sends the file to our encoding service Zencoder, which encodes the video file and creates a thumbnail for it.

Normally, I could do something like @video.attachment.url, which will return the path of the video file. I'd like to do the same thing with the thumbnail. i.e. @video.attachment_thumbnail.url

However, since the attachment is created by our encoding service, which also uploads it to a specified S3 bucket. How do I assign the attachment to the attachment_thumbnail column for the record?

Can I simply do something like:

@video.update_attributes(   :attachment_thumbnail => 'https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png' ) 

Is it possible to assign files like this to Carrierwave?

like image 377
Christian Fazzini Avatar asked Feb 15 '11 18:02

Christian Fazzini


2 Answers

You can do the following:

@video.remote_attachment_thumbnail_url = 'https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png' 

But that will cause Carrierwave to download + reprocess the file rather than just make it the thumbnail. If you're not going to use Carrierwave's processing, then it might make more sense to just store the URL to the thumbnail on the model rather than even using Carrierwave.

like image 156
ctide Avatar answered Oct 03 '22 00:10

ctide


This worked for me, with CarrierWave 0.5.8

model.update_attributes(:remote_uploader_url => "http://path/to/image.jpg") 

Of course, you need to set remote_uploader_url to be attr_accessible for this.

like image 41
asif Avatar answered Oct 03 '22 00:10

asif