यदि आपका होस्ट अभी भी php 5.2 का उपयोग करता है और आपके पास fileinfo फ़ंक्शन तक पहुंच नहीं है, तो आप माइम प्रकार निर्धारित करने के लिए फ़ाइल हेडर सिग्नेचर (मैजिक नंबर) का परीक्षण कर सकते हैं
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";
}
नोट: कुछ हस्ताक्षर दूसरों के आंशिक रूप से मेल खा सकते हैं, उदाहरण के लिए पीके ज़िप फ़ाइल हस्ताक्षर जावा संग्रह (.jar) फ़ाइल हस्ताक्षर के पहले 4 बाइट्स से मेल खाता है, माइम के लिए सही हस्ताक्षर निर्धारित करने के लिए फ़ोरैच लूप में अतिरिक्त कथनों की आवश्यकता होगी टाइप करें , लेकिन आपकी स्थिति के लिए यह करना चाहिए।
फ़ाइल हस्ताक्षरों की एक अद्यतन सूची http://www.garykessler.net/library पर पाई जा सकती है। /file_sigs.html अगर किसी को अधिक फ़ाइल हस्ताक्षर प्रकारों की आवश्यकता है।