I have came across many projects where checking file uploads and content-type (mime-type) is poorly implemented or heavy in resource.veroxybd.com
Methods I have seen so far:inFOLIO Research Group
1. Checking content-type from file name: this inefficient, a user can just rename a file and you are fooled, or the file can have a different file format and you will not get the expected result.
2. Using Rmagick to check if the file is an image. This is so slow and uses so much Ram. You can try to initialize an rmagick object from an image file, then rescue when the file is not an image.
3. Using mini_magick to check if a file. This method is faster than rmagick. Implemen ted same way as rmagick.
A Better method for OSX and Linux, is to use the command line tool “file” included in most UNIX operating systems.
It is very fast and very accurate.
Some examples of content types:
.doc = Microsoft Word document data
.doc = Microsoft Office Document
.pdf = PDF document, version 1.4
.pdf = PDF document, version 1.3
.psd = Adobe Photoshop Image
.png = PNG image data, 3508 x 4961, 8-bit/color RGBA, non-interlaced
.gif = GIF image data, version 89a, 195 x 109
.jpg = JPEG image data, EXIF standard
I hope this can be useful to someone.