Rails:如何根据mime类型获取文件扩展名/后缀

Lor*_*rie 14 ruby file-extension mime-types ruby-on-rails-3

我的问题是,Ruby on Rails是否具有类似于以下功能:

file_content_type = MIME::Types.type_for(file).first.content_type
Run Code Online (Sandbox Code Playgroud)

这将返回特定mime类型的文件扩展名或后缀?因此,如果我传入'image/jpeg',该函数将返回'jpg'

寻找一种更清晰的代码编写方式,而不是编写执行相同工作的case语句.

And*_*all 35

Rack::Mime 有这种能力(和Rack是Rails的依赖):

require 'rack/mime'
Rack::Mime::MIME_TYPES.invert['image/jpeg']  #=> ".jpg"
Run Code Online (Sandbox Code Playgroud)

如果您要经常进行查找,您可能希望记住反向哈希,因为它不是一个便宜的操作.


jro*_*ind 6

自从我发现这个谷歌搜索以来,这是一个更好的最新答案。

Mime::Type.lookup('image/jpeg').symbol.to_s
# => "jpg"
Run Code Online (Sandbox Code Playgroud)