Więc myślę, że jest Mime :: Rodzaj i MIME :: typy, które są całkowicie oddzielone od siebie inny. Zauważ, że jest to "Mime" vs "MIME".
Na przykład
MIME::Types.type_for("foo.json")
powraca
[#<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">]
Jednak
Mime::Type.lookup_by_extension("json")
zwraca
#<Mime::Type:0x1051c4d40 @symbol=:json, @string="text/x-json", @synonyms=[]>
Wygląda więc na to, czy chcesz dodać typ tak że jest ona zwracana przy użyciu type_for można użyć następujących:
>> 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">]
>>
ostrzeżenie, gdy dodatek jest nazywany jest trochę dotycząca więc powinieneś dowiedzieć się, w jaki sposób dołączyć rozszerzenie do typu "video/mp4". Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dla MIME::Types i MIME::Type.
Co 'to nie uznając oznacza it'? –
Znaczenie nic nie jest zwracane, gdy robię "type_for" jak w moim przykładzie powyżej. Inne rozszerzenia (.mov, .mp3, itp.) Zwracają typ fine. – Shpigford
Czy masz pewność, że typ MIME jest wysyłany przez przeglądarkę? Ponieważ jeśli nie jest wysyłany przez twoją przeglądarkę, nie możesz jej użyć w swoim Railsowym APP – shingara