pytanie PO była jak przetwarzać pliki, które nie są obrazy.
Proszę spojrzeć na ten plik źródłowy na GitHub: carrierwave/lib/carrierwave/uploader/processing.rb i sprawdzić komentarze.
Musisz utworzyć własną CarrierWave uploader podklasę i zamontować go w swoim modelu tak:
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
Należy pamiętać, że jest on zamontowany na atrybut ActiveRecord :uploaded_file
. Oznacza to, że po uzyskaniu dostępu do modelu :uploaded_file
otrzymasz egzemplarz narzędzia do przesyłania plików CarrierWave dla przesłanego pliku.
można po prostu zdefiniować przetwarzanie wewnątrz przesyłającej następująco:
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
Wewnątrz my_nifty_file_processor
, byś po prostu zadzwonić read
na obiekcie, który zostanie przekazany do odczytu pliku.
CarrierWave pozwala na wywołanie read
na dowolnej instancji programu Uploader (= dowolne wystąpienie przesłanego pliku) i odczyta ten plik.
Jeden więcej Wskazówka:
Czasami trzeba przejść do modelu ActiveRecord w swoim przesyłającej, na którym plik został przesłany.
Wystarczy dostęp do niego wewnątrz kodu uploader tak:
self.model
Pozwala to na przechowywanie dodatkowych informacji o przesłanym pliku, takie jak format, bezpośrednio w modelu AR.
Ten adres URL jest już niedostępny :( – peanut
Prawda, przeniosłem go tutaj: http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –
zaktualizowany link nie pracować albo ... – scientiffic