| 
       
	文章提供一款php检测文件类型,根据文件header信息,他可以根据用户发布的文件头部信息来确实文件的类型,代码如下: 
	
		- 
			<?php  
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			  
 
		- 
			class cfiletypecheck  
 
		- 
			{  
 
		- 
			private static $_typelist=array();  
 
		- 
			private static $checkclass=null;  
 
		- 
			private function __construct($filename)  
 
		- 
			{  
 
		- 
			self::$_typelist=$this->gettypelist();  
 
		- 
			}  
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			  
 
		- 
			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);  
 
		- 
			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;  
 
		- 
			}  
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			 
 
		- 
			  
 
		- 
			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);  
 
		- 
			}  
 
		- 
			} 
 
		- 
			?> 
 
		- 
			 
 
	 
 
      
      (责任编辑:最模板) |