Determinate mime type from MySQL column

后端 未结 4 947
闹比i
闹比i 2021-01-06 16:20

I received an exported database from MSAccess (not my favorite) and I imported it to a MySQL table. There\'s a column named \'customerImage\' and is a \'long BLOB\' type wit

4条回答
  •  佛祖请我去吃肉
    2021-01-06 17:04

    IF your host still uses php 5.2 and dont have access to the fileinfo functions you can test the files header signature (magic numbers) to determine mime type

    function mimetype($data)
    {
        //File signatures with their associated mime type
        $Types = array(
        "474946383761"=>"image/gif",                        //GIF87a type gif
        "474946383961"=>"image/gif",                        //GIF89a type gif
        "89504E470D0A1A0A"=>"image/png",
        "FFD8FFE0"=>"image/jpeg",                           //JFIF jpeg
        "FFD8FFE1"=>"image/jpeg",                           //EXIF jpeg
        "FFD8FFE8"=>"image/jpeg",                           //SPIFF jpeg
        "25504446"=>"application/pdf",
        "377ABCAF271C"=>"application/zip",                  //7-Zip zip file
        "504B0304"=>"application/zip",                      //PK Zip file ( could also match other file types like docx, jar, etc )
        );
    
        $Signature = substr($data,0,60); //get first 60 bytes shouldnt need more then that to determine signature
        $Signature = array_shift(unpack("H*",$Signature)); //String representation of the hex values
    
        foreach($Types as $MagicNumber => $Mime)
        {
            if( stripos($Signature,$MagicNumber) === 0 )
                return $Mime;  
        }
    
        //Return octet-stream (binary content type) if no signature is found
        return "application/octet-stream"; 
    }
    

    NOTE: Some signatures may match partials of others, for instance the PK Zip file signature matches the first 4 bytes of java archive (.jar) file signature, extra statements would be needed in the foreach loop to determine the correct signature for the mime type, but for your situation this should do.

    A updated list of file signatures can be found at http://www.garykessler.net/library/file_sigs.html if someone needs more file signature types.

提交回复
热议问题