Vì vậy, tôi nghĩ rằng đó là Mime :: Loại và MIME :: Các loại đó là hoàn toàn tách biệt với nhau khác. Lưu ý rằng đó là "Mime" và "MIME".
Ví dụ,
MIME::Types.type_for("foo.json")
lợi nhuận
[#<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">]
Tuy nhiên,
Mime::Type.lookup_by_extension("json")
lợi nhuận
#<Mime::Type:0x1051c4d40 @symbol=:json, @string="text/x-json", @synonyms=[]>
Vì vậy, nó trông như thế nào nếu bạn muốn thêm một loại để nó được trả về khi sử dụng type_for bạn có thể sử dụng như sau:
>> 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">]
>>
Cảnh báo khi add được gọi là một chút liên quan, do đó bạn có lẽ nên tìm ra cách để thêm phần mở rộng của bạn vào loại "video/mp4". Để biết thêm thông tin, hãy xem tài liệu về MIME::Types và MIME::Type.
gì 'nó không nhận ra it' nghĩa? –
Có nghĩa là không có gì được trả về khi tôi làm 'type_for' như trong ví dụ trên. Các phần mở rộng khác (.mov, .mp3, v.v.) trả lại loại tiền phạt. – Shpigford
Bạn có chắc chắn rằng loại mime được gửi bởi trình duyệt của bạn? Bởi vì nếu nó không được gửi bởi trình duyệt của bạn, bạn không thể sử dụng nó trong Rails APP của bạn – shingara