php检测文件类型,根据文件header信息
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-09 10:42:23 浏览: 评论:0
文章提供一款php检测文件类型,根据文件header信息,他可以根据用户发布的文件头部信息来确实文件的类型,代码如下:
- <?php
- /*通过文件名,获得文件类型*
- *@author chengmo*
- *@copyright cnblog.com/chengmo 2010-10-17
- *@version 0.1
- *$filename="d:/1.png";echo cfiletypecheck::getfiletype($filename); 打印:png
- */
- class cfiletypecheck
- {
- private static $_typelist=array();
- private static $checkclass=null;
- private function __construct($filename)
- {
- self::$_typelist=$this->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"));
- } //开源代码phpfensi.com
- public static function getfiletype($filename)
- {
- if(!self::$checkclass) self::$checkclass=new self($filename);
- $class=self::$checkclass;
- return $class->_getfiletype($filename);
- }
- }
- ?>
Tags: php检测文件类型 header信息
- 上一篇:文件上传进度条php代码
- 下一篇:php 问问采集代码
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)