Rails:.m4v文件的MIME类型问题
在我的Rails应用程序中,我试图获取文件的MIME类型,如下所示:
MIME::Types.type_for("example.m4v").to_s
但它没有认识到它。
我尝试将以下内容添加到config/initializers/mime_types.rb
(并重启服务器),没有任何运气:
Mime::Type.register "video/mp4", :m4v
您需要config/initializers/mime_types.rb
添加到config/initializers/mime_types.rb
文件中:
# register MIME type with Rails Mime::Type.register "video/mp4", :m4v # register MIME type with MIME::Type gem MIME::Types.add(MIME::Type.from_array("video/mp4", %(m4v)))
现在在控制台中,您可以测试结果
MIME::Types.type_for("abc.m4v").to_s #=> "video/mp4"
所以我认为Mime :: Type和MIME :: Types完全是彼此分开的。 请注意,它是“Mime”vs“MIME”。
例如,
MIME::Types.type_for("foo.json")
回报
[#]
然而,
Mime::Type.lookup_by_extension("json")
回报
#
所以看起来如果你想添加一个类型,以便在使用type_for时返回它,你可以使用以下代码:
>> t = MIME::Type.from_array('video/mp4', %w(m4v)) => # >> MIME::Types.add(t) Type video/mp4 already registered as a variant of video/mp4. => [# ] >> MIME::Types.type_for("example.m4v") => [# ] >>
调用add时的警告有点令人担忧,所以你应该弄清楚如何将扩展名附加到“video / mp4”类型。 有关更多信息,请查看MIME :: Types和MIME :: Type的文档。