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.
Questo URL non è più disponibile :( – peanut
Vero, l'ho spostato qui: http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –
il collegamento aggiornato non lavoro sia ... – scientiffic