2012-08-07 12 views

答えて

1

ビデオのサムネイルを作成するカスタムポストプロセッサを作成する方法についてブログ記事を書いたが、おそらくそれが役に立つと思うだろう。

https://prograils.com/posts/video-encoding-processor-for-carrierwave/

+1

このURLはもはや利用できません:( – peanut

+1

本当に、私はここに移動しました:http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –

+0

更新されたリンクはありませんどちらかといえば... – scientiffic

6

OPの質問には、画像ではありませんファイルを処理する方法でした。

GitHubのこのソースファイルを見てください: carrierwave/lib/carrierwave/uploader/processing.rbとコメントを確認してください。

独自CarrierWaveアップローダーサブクラスを作成しており、このようなあなたのモデルでそれをマウントします:

def MyModel < ActiveRecord::Base 

    # this is where the uploaded file will be available in your model, 
    # as a `MyUploader` instance: 
    # 
    mount_uploader :uploaded_file, MyUploader 

    ... 
    end 

それはActiveRecordの属性:uploaded_fileに取り付けられていますのでご注意ください。 これは、モデルから:uploaded_fileにアクセスすると、アップロードされた特定のファイルのCarrierWaveアップローダーのインスタンスを取得することを意味します。次のように

あなたは、単にあなたのアップローダーの内側にあなたの処理を定義することができます。

class MyUploader < CarrierWave:Uploader::Base 
    process :my_custom_processing => [param1,param2,param3] 

    def my_custom_processing(param1,param2,param3) 
     ... 
     # e.g. you could call a method which is defined elsewhere, 
     # which operates on a file: 
     my_nifty_file_processor(self.uploaded_file) 
     # 
     # or you could just do this directly: 
     uploaded_data = self.uploaded_file.read 
     ... 
    end 
    end 

my_nifty_file_processor内部では、あなたは、単にファイルを読むためにで渡されるオブジェクトにreadを呼ぶだろう。

CarrierWaveでは、Uploaderインスタンス(アップロードされたファイルのインスタンス)にreadを呼び出すことができ、そのファイルが読み取られます。

もう一つのヒント:

時々、あなたはファイルがアップロードされたために、あなたのアップローダー内のActiveRecordモデルにアクセスする必要があります。

単純にこのようなあなたのアップローダーコード内でアクセス:

 self.model 

これは、あなたが直接あなたのARモデルでは、このようなフォーマットとしてアップロードされたファイルに関する追加情報を格納することができます。

+1

ありがとうあなた、私はあなたの説明が現在のトップ・ワンよりも重要であることを発見しました。 – springloaded

関連する問題