毎日SEの技術ブログ

平日は社内SE、休みは自宅でサービス開発するSEの技術ブログ

Ruby ファイルの種類からcontent-typeを取得する

拡張子からの判断ではなく、ファイルの内容で判別したい

具体的に言うと、jpegファイルを拡張子pngにして保存したときも"image/jpeg"が取得したい ということ。

MIME::Typesを使うと拡張子から判断するため、上記の場合"image/png"が取得されてしまう。

ruby-filemagicを使う

1.まず下記をインストール

// for Mac
brew install libmagic

// for CentOS
yum install file-devel 

2.gemをインストール

gem install 'ruby-filemagic'

3.下記で取得

path = 'test.png' # 実際のファイルはjpeg
FileMagic.new(FileMagic::MAGIC_MIME).file(path).split(';').first # =>image/jpeg