如何为Carrierwave分配远程文件?
我有以下定义的video模型:
class Video require 'carrierwave/orm/activerecord' mount_uploader :attachment, VideoUploader mount_uploader :attachment_thumbnail, VideoThumbnailUploader ... end
当我上传video文件时。 它还将文件发送到我们的编码服务Zencoder,Zencoder对video文件进行编码并为其创建缩略图。
通常情况下,我可以执行类似@ video.attachment.url的操作,它将返回video文件的路径。 我想用缩略图做同样的事情。 即@ video.attachment_thumbnail.url
但是,由于附件是由我们的编码服务创建的,该服务还将其上载到指定的S3存储桶。 如何将附件分配给记录的attachment_thumbnail列?
我可以简单地做一些事情:
@video.update_attributes( :attachment_thumbnail => 'https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png' )
是否可以将这样的文件分配给Carrierwave?
您可以执行以下操作:
@video.remote_attachment_thumbnail_url = 'https://bucket_name.s3.amazonaws.com/uploads/users/1/video/1/thumb.png'
但这将导致Carrierwave下载+重新处理文件,而不仅仅是将其作为缩略图。 如果您不打算使用Carrierwave的处理,那么将URL存储到模型上的缩略图而不是使用Carrierwave可能更有意义。
这对我有用,CarrierWave 0.5.8
model.update_attributes(:remote_uploader_url => "http://path/to/image.jpg")
当然,您需要将remote_uploader_url
设置为attr_accessible
。
我也在寻找这个。
zencoder情况下的阻塞点是Carrierwave不跟踪原始文件的不同不同文件类型版本。 它只引用原始文件。
因此将原始文件作为.mp4 aa缩略图版本作为.png不起作用。 虽然您可以拥有’image.png’并跟踪’thumb_png_image.png’,但您也无法为同一文件创建’thumb_jpg_image.jpg’。
否则你可以创建一个虚拟版本,并使用条件版本控制告诉CW不要处理它。 由于CW无论如何都会创建虚拟版本但不上传它,您可以让它引用与Zencoder返回的文件匹配的路径。 但是哦,好吧……
在本集结尾(7:35),Ryan Bates在文件表单上传中添加了remote_image_url:
- Rails资产管道问题与jquery-ui
- Rails教程sample_app在Heroku中失败,带有log:ActionController :: RoutingError(没有路由匹配“/ about”):
- 尝试使用RVM安装Ruby时,为什么会出现需求错误?
- 如何在Ruby on Rails中连接到MySQL?
- Twitter Bootstrap Modal无法在Rails中运行
- Image Paperclip :: Errors :: NotIdentifiedByImageMagickError #Windows
- heroku – rails – 权限被拒绝(publickey)
- 使用rspec测试具有子域约束的路由
- gem jquery-ui-rails找不到文件’jquery.ui.all’(