2009-11-17 15 views
7

Walcząc do treningu, gdy dodam następujące validtion do mojego modelu Voice używając spinacza, jest on uruchamiany, gdy próbuję i przesłać MP3:Spinacz validates_attachment_content_type dla mp3 wyzwalane podczas mocowania mp3

class Voice < ActiveRecord::Base 
    has_attached_file :clip 

    validates_attachment_presence :clip 
    validates_attachment_content_type :clip, :content_type => [ 'application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3' ], 
            :message => 'file must be of filetype .mp3' 

    validates_attachment_size :clip, :less_than => 10.megabytes          

    validates_presence_of :title  
end 

Próbowałem liczba różnych plików mp3, ale żaden z nich nie wydaje się przesyłać, ponieważ sprawdzanie poprawności się nie udaje.

Odpowiedz

4

Po prostu głupie, przepraszam.

Po prostu usunąłem sprawdzanie poprawności, przejrzałem w db, jaki typ zawartości został zapisany jako ("audio/mpg") i dodałem go do aray dozwolonych content_types w walidacji.

Wykonane zadanie :-)

+0

Witam. Próbuję typu audio/WAV. Ale to nie działa. Czy mógłbyś mi pomóc? Dzięki :) – Vishal

4

Niewłaściwy typ zawartości? Spróbuj audio/mpeg.

http://www.w3schools.com/media/media_mimeref.asp

+0

Cóż, typem zawartości, z którym początkowo poszedłem, było: ['application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3'], Jednak typem zawartości zapisywanym w bazie danych było "audio/mpg", co uważałem za dziwne. Czy jest coś podejrzanego w moim mp3 czy coś dziwnego? To wydaje się dziwne. – Pete

1

Tak, ale jeśli użytkownik ma innej przeglądarki (lub inną wersję przeglądarki) typ zawartości MP3 może być interpretowany w sposób nieoczekiwany i nie będzie miał możliwość zapisania mp3.

+0

Zgadzam się, myślę, że będzie to przypadek budowania tablicy content_types, które są ważne dla mp3, aby objąć wszystkie bazy. – Pete

3

Dla (miejmy nadzieję) kompletnego mp3-wsparcia użyłem następujących typów MIME:

validates_attachment_content_type :audio, 
    :content_type => [ 'audio/mpeg', 'audio/x-mpeg', 'audio/mp3', 'audio/x-mp3', 'audio/mpeg3', 'audio/x-mpeg3', 'audio/mpg', 'audio/x-mpg', 'audio/x-mpegaudio' ] 
0

Tak, na tyle dziwnie, miałem ten problem dzisiaj, a żaden z powyższych rozwiązań nie były dla mnie pracy. I był już ten błąd:

`[paperclip] Content Type Spoof: Filename blah_blah_blah.mp3 (audio/mp3 from Headers, ["audio/mpeg"] from Extension), content type discovered from file command: application/octet-stream. See documentation to allow this combination.` 

I rozwiązać go za pomocą tego jako mojego walidator:

validates_attachment_content_type :recording, 
content_type: [ 
    'application/mp3', 
    'application/x-mp3', 
    'audio/mpeg', 
    ['audio/mpeg'], # note the array around the type 
    'audio/mp3' 
], 
message: 'File must be of filetype .mp3' 

Mam nadzieję, że ktoś pomaga.