2012-08-07 28 views

risposta

1

Ho scritto un post sul blog su come creare post-processor personalizzato per creare miniature di video, forse lo troverete utile.

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

+1

Questo URL non è più disponibile :( – peanut

+1

Vero, l'ho spostato qui: http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –

+0

il collegamento aggiornato non lavoro sia ... – scientiffic

6

La domanda del PO è stato come elaborare i file che non sono immagini.

Si prega di dare un'occhiata a questo file sorgente su GitHub: carrierwave/lib/carrierwave/uploader/processing.rb e controllare i commenti.

Dovrete creare il proprio CarrierWave uploader sottoclasse e montarlo nel modello come questo:

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 

Si prega di notare che è montato sul l'attributo ActiveRecord :uploaded_file. Ciò significa che quando si accede a :uploaded_file dal modello, si otterrà un'istanza del caricatore CarrierWave per il file specifico che è stato caricato.

Si può semplicemente definire il trattamento all'interno del vostro uploader come segue:

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 

All'interno my_nifty_file_processor, si sarebbe semplicemente chiamare read sull'oggetto che viene passato per leggere il file.

CarrierWave consente di chiamare read su qualsiasi istanza di Uploader (= qualsiasi istanza di un file caricato) e leggerà tale file. più

Una punta:

A volte è necessario accedere al modello ActiveRecord all'interno del vostro uploader, per il quale è stato caricato il file.

sufficiente accedere all'interno del vostro codice di uploader in questo modo:

 self.model 

Questo consente di memorizzare ulteriori informazioni sul file caricato, come il formato, direttamente nel modello AR.

+1

Grazie tu, ho trovato la tua spiegazione più rilevante di quella attuale. – springloaded

Problemi correlati