Je pense qu'il ya Mime :: Type et les types de MIME qui sont complètement séparés l'un de autre. Notez que c'est "Mime" vs "MIME".
Par exemple,
MIME::Types.type_for("foo.json")
retours
[#<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">]
Pourtant,
Mime::Type.lookup_by_extension("json")
retours
#<Mime::Type:0x1051c4d40 @symbol=:json, @string="text/x-json", @synonyms=[]>
Il semble donc que si vous voulez ajouter un type de sorte qu'il est retourné lors de l'utilisation type_for vous pouvez utiliser les éléments suivants:
>> 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">]
>>
L'avertissement lorsque add est appelé est un peu au sujet de sorte que vous devriez probablement savoir comment pour ajouter votre extension au type "video/mp4". Pour plus d'informations, consultez la documentation pour MIME::Types et MIME::Type.
Qu'est-ce que 'ce n'est pas reconnaître il s' signifie? –
Ce qui signifie que rien n'est retourné quand je fais 'type_for' comme dans mon exemple ci-dessus. D'autres extensions (.mov, .mp3, etc) renvoient le type bien. – Shpigford
Etes-vous sûr que mime-type est envoyé par votre navigateur? Parce que s'il n'est pas envoyé par votre navigateur, vous ne pouvez pas l'utiliser dans votre application Rails – shingara