2009-11-17 23 views
7

Luchando para hacer ejercicio cuando agrego el siguiente validtion a mi modelo de voz mediante un clip, que se desencadena cuando intento subir un mp3:validates_attachment_content_type Paperclip para mp3 activa al conectar 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 

He probado número de archivos mp3 diferentes, pero ninguno de ellos parece cargarse porque la validación está fallando.

Respuesta

4

Simplemente siendo tonto, lo siento.

Simplemente eliminé la validación, visualicé en el archivo db cómo se estaba guardando el content_type como ('audio/mpg') y lo agregué al arsenal de content_types permitidos en la validación.

Trabajo realizado :-)

+0

Hola. Estoy tratando de usar el tipo de audio/wav. Pero no funciona. ¿Me podría ayudar? Gracias :) – Vishal

4

¿Tipo de contenido incorrecto? Pruebe audio/mpeg.

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

+0

Bueno, la variedad de tipos de contenido que fui con permitir inicialmente era: ['application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3'], Sin embargo, el tipo de contenido que se guardaba en la base de datos era 'audio/mpg', lo que me pareció extraño. Entonces, ¿hay algo dudoso sobre mis mp3 o algo extraño? Esto parece extraño. – Pete

1

sí, pero si un usuario tiene otro navegador (u otra versión del navegador) tipo de contenido de mp3 podría interpretarse de manera inesperada y no tendrá la posibilidad de guardar mp3.

+0

Estoy de acuerdo, creo que va a ser un caso de crear una matriz de content_types que son todos válidos para un mp3 para cubrir todas las bases. – Pete

3

Para una (esperemos) completa mp3-apoyo que utilizaron los siguientes tipos 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

Así que, curiosamente, estaba teniendo este problema esta noche, y ninguna de las soluciones anteriores estaban trabajando para mí. Que estaba recibiendo este error:

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

Lo resuelto mediante el uso de esto como mi validador:

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' 

Esperamos que esto ayude a alguien.