Подтвердить что ты не робот

Как назначить удаленный файл для Carrierwave?

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

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?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Итак, имея исходный файл как .mp4, версия миниатюры как .png не работает. Хотя вы можете иметь "image.png", а также отслеживать "thumb_png_image.png", вы также не можете создать "thumb_jpg_image.jpg" для того же файла.

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