25

次の定義のビデオ モデルがあります。

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

4 に答える 4

50

次のことができます。

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

ただし、これにより、Carrierwave は単にサムネイルにするのではなく、ファイルをダウンロードして再処理します。Carrierwave の処理を​​使用しない場合は、Carrierwave を使用するよりもモデルのサムネイルへの URL を保存する方が理にかなっています。

于 2011-02-15T18:13:00.290 に答える
11

これは、CarrierWave 0.5.8でうまくいきました

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

もちろん、このために設定する必要がありremote_uploader_urlますattr_accessible

于 2012-07-03T04:51:38.310 に答える
0

私もこれを探していました。

Zencoder の場合のブロック ポイントは、Carrierwave が元のファイルのさまざまなファイル タイプ バージョンを追跡しないことです。元のファイルのみを参照します。

したがって、元のファイルを .mp4 aa サムネイル バージョンとして .png として使用しても機能しません。「image.png」を作成して「thumb_png_image.png」を追跡することはできますが、同じファイルに対して「thumb_jpg_image.jpg」を作成することはできません。

それ以外の場合は、ダミー バージョンを作成し、条件付きバージョン管理を使用して CW にそれを処理しないように指示することができます。とにかく CW はダミー バージョンを作成しますが、それをアップロードしないため、Zencoder によって返されたファイルと一致するパスを参照することができます。でもまあ…

于 2012-07-27T05:47:02.697 に答える
0

このエピソードの最後 (7:35) で、Ryan Bates はファイル形式のアップロードに remote_image_url を追加します。

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

于 2013-04-26T09:18:05.917 に答える