文章提供一款php检测文件类型(根据文件header信息)哦,他可以根据用户发布的文件头部信息来确实文件的类型。
文章提供一款php教程检测文件类型(根据文件header信息)哦,他可以根据用户发布的文件头部信息来确实文件的类型。
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,ps教程d), 
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); 
} 
}
http://www.bkjia.com/phpjc/444834.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/444834.htmltecharticle文章提供一款php检测文件类型(根据文件header信息)哦,他可以根据用户发布的文件头部信息来确实文件的类型。 文章提供一款php教程检测文...
   
 
   