Я добавляю видео, загруженные пользователями, на свой сайт RoRs с помощью драгоценного камня скрепки и хранилища s3. По какой-то причине, которую я не могу понять, всякий раз, когда пользователь загружает файл mp4, s3 устанавливает тип содержимого -для этого файла как application/mp4
вместо video/mp4
.
Обратите внимание, что я зарегистрировал тип mime mp4 в файле инициализатора :
Mime::Type.lookup_by_extension('mp4').to_s
=> "video/mp4"
. Вот соответствующая часть моей модели 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"
Чего мне не хватает в моей скрепке и/или наборе s3 -.
####Обновление#####
По какой-то причине, которая выходит за рамки моего знания Rails, мои типы mime по умолчанию для файлов, содержащихся в mp4, следующие:
MIME::Types.type_for("my_video.mp4").to_s
=> "[application/mp4, audio/mp4, video/mp4, video/vnd.objectvideo]"
Таким образом, когда скрепка отправляет файл mp4 на s3, он, кажется, идентифицирует тип mime файла как первое значение по умолчанию «application/mp4». Вот почему s3 идентифицирует файл как имеющий тип содержимого -«application/mp4». Поскольку я хочу включить потоковую передачу этих файлов mp4, мне нужна скрепка, чтобы идентифицировать файл как имеющий MIME-тип «video/mp4».
Есть ли способ изменить скрепку (, возможно, в фильтре процесса до _после _), чтобы разрешить это, или есть способ изменить рельсы через файл инициализации, чтобы идентифицировать файлы mp4 как " видео/mp4". Если бы я мог сделать то же самое, какой способ лучше.
Спасибо за помощь