Направляющие: тип MIME выходит с .m4v файлами

В моем приложении для направляющих я пытаюсь получить тип MIME файла как так:

MIME::Types.type_for("example.m4v").to_s

Но это не распознает его.

Я пытался добавить следующее к config/initializers/mime_types.rb (и перезапущенный сервер) без любой удачи:

Mime::Type.register "video/mp4", :m4v

9
задан Shpigford 10 March 2010 в 04:17
поделиться

2 ответа

Вам необходимо добавить следующие строки в ваш файл 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"
8
ответ дан 4 December 2019 в 22:28
поделиться

Итак, я думаю, что есть Mime :: Type и MIME :: Types, которые полностью отделены друг от друга. Обратите внимание, что это «MIME» против «MIME».

Например,

MIME::Types.type_for("foo.json") 

возвращает

 [#<MIME::Type:0x1038b3108 @system=nil, @encoding="8bit", @simplified="application/json", @sub_type="json", @registered=true, @url=["IANA", "RFC4627"], @docs=nil, @obsolete=nil, @extensions=["json"], @raw_sub_type="json", @media_type="application", @raw_media_type="application", @content_type="application/json">]

Тем не менее,

Mime::Type.lookup_by_extension("json")

возвращает

#<Mime::Type:0x1051c4d40 @symbol=:json, @string="text/x-json", @synonyms=[]>

Таким образом, похоже, что если вы хотите добавить тип, чтобы он возвращался при использовании type_for, вы можете использовать следующее:

>> t = MIME::Type.from_array('video/mp4', %w(m4v))
=> #<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">
>> MIME::Types.add(t)
Type video/mp4 already registered as a variant of video/mp4.
=> [#<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">]
>> MIME::Types.type_for("example.m4v")
=> [#<MIME::Type:0x1055de3b8 @system=nil, @encoding="base64", @simplified="video/mp4", @sub_type="mp4", @registered=true, @url=nil, @docs=nil, @obsolete=nil, @extensions=["m4v"], @raw_sub_type="mp4", @media_type="video", @raw_media_type="video", @content_type="video/mp4">]
>>

Предупреждение при вызове add вызывает небольшое беспокойство, поэтому вам, вероятно, следует выяснить, как добавить свое расширение к типу «video / mp4». Для получения дополнительной информации ознакомьтесь с документацией для MIME :: Types и MIME :: Type .

0
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: