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 with 'binary' as attribute. How can I determinate the Mime Type? I've tried different methods but all of them requires to be a file but data.
If someone could help me with PHP code or MySQL command would be great.
解决方案
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.