文章提供一款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);
-
}
-
}
-
?>
-
(责任编辑:最模板) |