我在回形针 gem 和 s3 存储的帮助下将用户上传的视频添加到我的 RoRs 网站。由于某种我无法弄清楚的原因,每当用户上传 mp4 文件时,s3 都会将该文件的内容类型设置为application/mp4
而不是video/mp4
.
请注意,我已经在初始化文件中注册了 mp4 mime 类型:
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 的了解的原因,我对包含 mp4 的文件的默认 mime 类型如下:
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 文件的流式传输,所以我需要回形针来将文件识别为具有“video/mp4”的 mime 类型。
有没有办法修改回形针(可能在 before_post_process 过滤器中)以允许这样做,或者有没有办法通过 init 文件修改 rails 以将 mp4 文件标识为“video/mp4”。如果我可以做任何一个,哪种方式最好。
谢谢你的帮助