FileInfo detects file encodings and MIME types using the wonderful Unix file
command.
Add this line to your application's Gemfile:
gem 'fileinfo'
And then execute:
$ bundle
Or install it yourself as:
$ gem install fileinfo
Use FileInfo.parse
with a string or FileInfo.load
with a filename.
FileInfo.parse('foo bar baz').encoding # => #<Encoding:US-ASCII>
FileInfo.parse('föø bår bàz').encoding # => #<Encoding:UTF-8>
filename = '/Users/rafbm/Downloads/some_crap_coming_from_windows.csv'
FileInfo.load(filename).encoding # => #<Encoding:ISO-8859-1>
A bunch of methods are available depending on your needs.
info = FileInfo.load('picture.jpg')
info.type # => "image/jpeg"
info.media_type # => "image"
info.sub_type # => "jpeg"
The #mime_type
method can also return a MIME::Type
instance.
info = FileInfo.parse('Hello world')
info.mime_type # => #<MIME::Type:0x007f81a1a36090 @content_type="text/plain" ...>
NOTE: You must install the mime-types
gem yourself as it is not a dependency of fileinfo
.
Finally, #content_type
can be used to get the full string returned by file --mime --brief
.
info = FileInfo.parse('Hëllø wõrld')
info.content_type # => "text/plain; charset=utf-8"
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
© 2017 Rafaël Blais Masson. FileInfo is released under the MIT license.