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
The FileInfo extension can be used. It contains a function called finfo_buffer()
Save the blob to a temp file and use the php finfo_file function on it.
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.
The FileInfo extension, and, more specifically, its finfo_buffer() function, might help, here (quoting) :
This function is used to get information about binary data in a string.
Fetching your binary data from database, and passing it to this function, might do the trick.
Note : its comes with PHP >= 5.3