2012-08-07 10 views

Antwort

1

Ich schrieb einen Blogpost darüber, wie man einen benutzerdefinierten Postprozessor erstellt, um Thumbnails von Videos zu erstellen, vielleicht finden Sie es nützlich.

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

+1

Diese URL ist nicht mehr verfügbar :( – peanut

+1

Richtig, ich habe es hierher verschoben: http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –

+0

der aktualisierte Link nicht arbeiten Sie entweder ... – scientiffic

6

Die Frage des OP war, wie Dateien zu verarbeiten, die keine Bilder sind.

Bitte sehen Sie sich diese Quelldatei auf GitHub an: carrierwave/lib/carrierwave/uploader/processing.rb und überprüfen Sie die Kommentare.

Sie werden Ihre eigenen CarrierWave Uploader Unterklasse haben erstellen und montieren Sie ihn in Ihrem Modell wie folgt aus:

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 

Bitte beachten Sie, dass es :uploaded_file auf dem Active Attribut angebracht ist. Das bedeutet, wenn Sie von Ihrem Modell aus auf :uploaded_file zugreifen, erhalten Sie eine Instanz Ihres CarrierWave-Uploaders für die bestimmte Datei, die hochgeladen wurde.

Sie können einfach Ihre Verarbeitung in Ihrem Uploader wie folgt definieren:

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 

Innen my_nifty_file_processor Sie einfach read auf das Objekt aufrufen würde, die in übergeben wird, die Datei zu lesen.

Mit CarrierWave können Sie read auf einer beliebigen Uploader-Instanz aufrufen (= jede Instanz einer hochgeladenen Datei) und diese Datei lesen.

Ein weiterer Tipp:

Manchmal müssen Sie in Ihrem Uploader das Active Modell zugreifen können, für die die Datei hochgeladen wurde.

einfach zugreifen es in Ihrem Uploader Code wie folgt:

 self.model 

Auf diese Weise können Sie speichern zusätzliche Informationen über die hochgeladene Datei, wie Format, direkt in Ihrem AR-Modell.

+1

Vielen Dank Du, ich fand deine Erklärung relevanter als die aktuelle Spitze. – springloaded

Verwandte Themen