2012-02-03 10 views
9

Mam narzędzie do przesyłania plików CarrierWave, które będzie akceptować różne typy plików. Niektóre z nich to typy obrazów (np. Jpg, png), inne nie.Typy plików mieszanych z CarrierWave

Chciałbym utworzyć nośnik wersję przesłanego pliku z

version :medium do 
    process :resize_to_fit => [300, 300] 
end 

Jak to działa tylko dla plików graficznych, w jaki sposób można odróżnić obrazów i innych typów i pominąć zmianę rozmiaru plików non-image ?

W tej chwili CarrierWave próbuje przetworzyć plik niezależnie od jego typu, co prowadzi do błędu przetwarzania MiniMagick, jeśli plik nie jest obrazem.

+1

Chcesz skorzystać z tej uploader dla wideo i audio też? –

+0

Tak. I PDF. I TXT. I EXE. I ZIP ... – tobiasbayer

+0

Nigdy nie próbowałem tego, ale co, jeśli sprawdzisz przed przesłaniem rozszerzenia pliku przed blokiem 'version'? –

Odpowiedz

13

Według Carrierwave Docs można zrobić warunkowego przetwarzania:

version :medium, :if => :image? do 
    process :resize_to_fit => [300, 300] 
end 

protected 

def image?(new_file) 
    new_file.content_type.include? 'image' 
end 

Właściwie bardziej pełną odpowiedź znalazłem here

Powiązane problemy