gettypelist();}/***处理文件类型映射关系表*** @param string $filename 文件类型* @return string 文件类型,没有找到返回:other*/private function _getfiletype($filename){$filetype=other;if(!file_exists($filename)) throw new exception(no found file!);$file = @fopen($filename,rb);if(!$file) throw new exception(file refuse!);$bin = fread($file, 15); //只读15字节 各个不同文件类型,头信息不一样。fclose($file);$typelist=self::$_typelist;foreach ($typelist as $v){$blen=strlen(pack(h*,$v[0])); //得到文件头标记字节数$tbin=substr($bin,0,intval($blen)); ///需要比较文件头长度if(strtolower($v[0])==strtolower(array_shift(unpack(h*,$tbin)))){return $v[1];}}return $filetype;}/***得到文件头与文件类型映射表*** @return array array(array(key,value)...)*/public function gettypelist(){return array(array(ffd8ffe1,jpg),array(89504e47,png),array(47494638,gif),array(49492a00,tif),array(424d,bmp),array(41433130,dwg),array(38425053,psd),array(7b5c727466,rtf),array(3c3f786d6c,xml),array(68746d6c3e,html),array(44656c69766572792d646174,eml),array(cfad12fec5fd746f,dbx),array(2142444e,pst),array(d0cf11e0,xls/doc),array(5374616e64617264204a,mdb),array(ff575043,wpd),array(252150532d41646f6265,eps/ps),array(255044462d312e,pdf),array(e3828596,pwl),array(504b0304,zip),array(52617221,rar),array(57415645,wav),array(41564920,avi),array(2e7261fd,ram),array(2e524d46,rm),array(000001ba,mpg),array(000001b3,mpg),array(6d6f6f76,mov),array(3026b2758e66cf11,asf),array(4d546864,mid));}public static function getfiletype($filename){if(!self::$checkclass) self::$checkclass=new self($filename);$class=self::$checkclass;return $class->_getfiletype($filename);}}?>
复制代码
