Aggiungo i video caricati dall'utente al mio sito RoRs con l'aiuto di paperclip gem e s3 storage. Per qualche ragione che non riesco a capire, ogni volta che un utente carica un file mp4, s3 imposta content-type per quel file come application/mp4
invece di video/mp4
.impostazione del tipo di contenuto per i file mp4 su s3
Nota che ho registrato tipo mp4 mimo in un file di inizializzazione:
Mime::Type.lookup_by_extension('mp4').to_s => "video/mp4"
Ecco la parte rilevante del mio modello Post:
has_attached_file :video,
:storage => :s3,
:s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
:path => "/video/:id/:filename"
validates_attachment_content_type :video,
:content_type => ['video/mp4'],
:message => "Sorry, this site currently only supports MP4 video"
Quello che mi manca nella mia graffetta e/o s3 set-up.
#### Aggiornamento #####
Per qualche ragione che va oltre la mia conoscenza di Rails, i miei tipi MIME di default per i file MP4 contenute sono le seguenti:
MIME::Types.type_for("my_video.mp4").to_s
=> "[application/mp4, audio/mp4, video/mp4, video/vnd.objectvideo]"
Quindi, quando paperclip invia un file mp4 a s3, sembra identificare il tipo di mime del file come il primo predefinito, "application/mp4". Ecco perché s3 identifica il file come avente un tipo di contenuto di "application/mp4". Perché voglio abilitare lo streaming di questi file mp4, ho bisogno di paperclip per identificare il file con un tipo mime di "video/mp4".
C'è un modo per modificare paperclip (magari in un filtro before_post_process) per consentirlo, oppure c'è un modo per modificare i binari attraverso un file di init per identificare i file mp4 come "video/mp4". Se potessi fare entrambi, qual è il modo migliore.
Grazie per il vostro aiuto
avuto un problema simile con i caricamenti .svg. Questo ha risolto i miei problemi:: s3_headers => {"Content-Type" => "image/svg + xml"} – DavidMann10k