2009-11-17 19 views
7

Lottando per allenamento quando aggiungo il seguente validtion al mio modello vocale utilizzando graffetta, esso viene attivato quando cerco di caricare un mp3:validates_attachment_content_type Paperclip per mp3 innescato quando si fissa 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 

Ho provato numero di file mp3 diversi ma nessuno di essi sembra caricare perché la convalida non riesce.

risposta

4

Solo essere sciocco, mi dispiace.

Ho semplicemente rimosso la convalida, visualizzato nel db cosa il content_type è stato salvato come ('audio/mpg') e l'ho aggiunto alla aray di content_types consentito nella convalida.

Lavoro terminato :-)

+0

Ciao. Sto provando per il tipo audio/wav. Ma non funziona. Per favore potete aiutarmi? Grazie :) – Vishal

4

Tipo di contenuto errato? Prova audio/mpeg.

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

+0

Beh, l'array di tipi di contenuti con cui inizialmente sono stato permesso era: ['application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3'], Tuttavia, il tipo di contenuto che è stato salvato nel database era "audio/mpg", che pensavo fosse strano. Quindi c'è qualcosa di losco nei miei mp3 o in qualcosa di strano? Questo sembra strano. – Pete

1

Sì, ma se un utente ha un altro browser (o altre versioni del browser) tipo di contenuto del formato mp3, potrebbe essere interpretata in modo inaspettato e non avrà la possibilità di salvare mp3.

+0

Sono d'accordo, penso che sarà un caso di costruire una serie di content_type che sono tutti validi per un mp3 per coprire tutte le basi. – Pete

3

Per un (si spera) completa mp3-sostegno che ho usato i seguenti tipi 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

Quindi, stranamente, ho avuto questo problema questa sera, e nessuna delle soluzioni di cui sopra stavano lavorando per me. Mi è stato sempre questo errore:

`[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.` 

ho risolto utilizzando questo come il mio validatore:

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' 

Speriamo che questo aiuta qualcuno.