Search code examples
rubyruby-on-rails-3mime-typesfile-extension

Rails: how to get a file extension/postfix based on the mime type


Question I have is, does Ruby on Rails have a function similar to:

file_content_type = MIME::Types.type_for(file).first.content_type

that will return the file extension or postfix for a specific mime type? So if I pass in 'image/jpeg' the function will return 'jpg'

Looking for a cleaner way to code than having to write a case statement that does the same job.


Solution

  • Rack::Mime has this ability (and Rack is a dependency of Rails):

    require 'rack/mime'
    Rack::Mime::MIME_TYPES.invert['image/jpeg']  #=> ".jpg"
    

    You may wish to memoize the inverted hash if you’re going to do the lookup often, as it’s not an inexpensive operation.