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); }}
本文地址:
转载随意,但请附上文章地址:-)