ayc*_*ter 9 ruby ruby-on-rails
给定变量content_type = "application/pdf",也可以包括任何其他mime类型.
如何获取内容类型的默认扩展名?
我目前有两个解决方案,看起来非常"复杂".
破解字符串
content_type.split("/")[1]
Run Code Online (Sandbox Code Playgroud)
使用MIME :: Types
require 'mime/types'
MIME::Types[content_type].first.extensions.first
Run Code Online (Sandbox Code Playgroud)
有更好的解决方案吗?
ved*_*ant 13
你需要的只是使用ruby的Hash.invert方法.
这个答案显示了如何做到这一点:
Rack::Mime有这种能力(和Rack是Rails的依赖):Run Code Online (Sandbox Code Playgroud)require 'rack/mime' Rack::Mime::MIME_TYPES.invert['image/jpeg'] #=> ".jpg"如果您要经常进行查找,您可能希望记住反向哈希,因为它不是一个便宜的操作.
从你的标签来看,无论如何你似乎都在使用rails.
您使用mime类型的第二个解决方案是您应该选择的解决方案.有几个原因:
Hack the string可能不一致或返回意外结果(想想application/postscript有扩展eps!)