Как назначить удаленный файл в Carrierwave? - PullRequest
24 голосов
/ 15 февраля 2011

У меня есть видео модель со следующим определением:

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

Когда я загружаю видеофайл. Он также отправляет файл в наш сервис кодирования Zencoder, который кодирует видеофайл и создает для него миниатюру.

Обычно я мог бы сделать что-то вроде @ video.attachment.url, который будет возвращать путь к видеофайлу. Я хотел бы сделать то же самое с миниатюрой. т.е. @ 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?

Ответы [ 4 ]

50 голосов
/ 15 февраля 2011

Вы можете сделать следующее:

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

Но это заставит Carrierwave загрузить + повторно обработать файл, а не просто сделать его миниатюрой.Если вы не собираетесь использовать обработку Carrierwave, то, возможно, имеет смысл просто сохранить URL-адрес миниатюры на модели, а не даже использовать Carrierwave.

11 голосов
/ 03 июля 2012

Это сработало для меня, с CarrierWave 0.5.8

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

Конечно, для этого нужно установить remote_uploader_url на attr_accessible.

0 голосов
/ 26 апреля 2013

В конце этого эпизода (7:35) Райан Бейтс добавляет remote_image_url в файл загрузки формы:

http://railscasts.com/episodes/253-carrierwave-file-uploads

0 голосов
/ 27 июля 2012

Я тоже искал это.

Точка блокировки в случае zencoder могла бы заключаться в том, что Carrierwave не отслеживает разные версии файлов разных типов для исходного файла.Он ссылается только на исходный файл.

Таким образом, исходный файл в формате .mp4 и в виде эскиза в качестве .png не работает.Хотя у вас может быть файл image.png, а также трек «thumb_png_image.png», вы также не можете создать «thumb_jpg_image.jpg» для того же файла.

В противном случае вы можете создать фиктивную версию ииспользуя условное управление версиями, CW не обрабатывает его.Поскольку CW все равно создаст фиктивную версию, но не загрузит ее, вы можете указать, что она ссылается на путь, соответствующий файлу, возвращенному Zencoder.Ну да ладно ...

...