国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php檢測文件類型,根據文件header信息

2024-05-04 21:48:54
字體:
來源:轉載
供稿:網友

文章提供一款php檢測文件類型,根據文件header信息,他可以根據用戶發布的文件頭部信息來確實文件的類型,代碼如下:

  1. <?php  
  2. /*通過文件名,獲得文件類型*  
  3. *@author chengmo*  
  4. *@copyright cnblog.com/chengmo 2010-10-17  
  5. *@version 0.1  
  6. *$filename="d:/1.png";echo cfiletypecheck::getfiletype($filename); 打印:png  
  7. */  
  8. class cfiletypecheck  
  9. {  
  10. private static $_typelist=array();  
  11. private static $checkclass=null;  
  12. private function __construct($filename)  
  13. {  
  14. self::$_typelist=$this->gettypelist();  
  15. }  
  16. /**  
  17. *處理文件類型映射關系表*  
  18.  
  19. * @param string $filename 文件類型  
  20. * @return string 文件類型,沒有找到返回:other  
  21. */  
  22. private function _getfiletype($filename)  
  23. {  
  24. $filetype="other";  
  25. if(!file_exists($filename)) throw new exception("no found file!");  
  26. $file = @fopen($filename,"rb");  
  27. if(!$filethrow new exception("file refuse!");  
  28. $bin = fread($file, 15); //只讀15字節 各個不同文件類型,頭信息不一樣。  
  29. fclose($file);  
  30. $typelist=self::$_typelist;  
  31. foreach ($typelist as $v)  
  32. {  
  33. $blen=strlen(pack("h*",$v[0])); //得到文件頭標記字節數  
  34. $tbin=substr($bin,0,intval($blen)); ///需要比較文件頭長度  
  35. if(strtolower($v[0])==strtolower(array_shift(unpack("h*",$tbin))))  
  36. {  
  37. return $v[1];  
  38. }  
  39. }  
  40. return $filetype;  
  41. }  
  42. /**  
  43. *得到文件頭與文件類型映射表*  
  44.  
  45. * @return array array(array('key',value)...)  
  46. */  
  47. public function gettypelist()  
  48. {  
  49. return array(array("ffd8ffe1","jpg"),  
  50. array("89504e47","png"),  
  51. array("47494638","gif"),  
  52. array("49492a00","tif"),  
  53. array("424d","bmp"),  
  54. array("41433130","dwg"),  
  55. array("38425053","ps教程d"),  
  56. array("7b5c727466","rtf"),  
  57. array("3c3f786d6c","xml"),  
  58. array("68746d6c3e","html"),  
  59. array("44656c69766572792d646174","eml"),  
  60. array("cfad12fec5fd746f","dbx"),  
  61. array("2142444e","pst"),  
  62. array("d0cf11e0","xls/doc"),  
  63. array("5374616e64617264204a","mdb"),  
  64. array("ff575043","wpd"),  
  65. array("252150532d41646f6265","eps/ps"),  
  66. array("255044462d312e","pdf"),  
  67. array("e3828596","pwl"),  
  68. array("504b0304","zip"),  
  69. array("52617221","rar"),  
  70. array("57415645","wav"),  
  71. array("41564920","avi"),  
  72. array("2e7261fd","ram"),  
  73. array("2e524d46","rm"),  
  74. array("000001ba","mpg"),  
  75. array("000001b3","mpg"),  
  76. array("6d6f6f76","mov"),  
  77. array("3026b2758e66cf11","asf"),  
  78. array("4d546864","mid"));  
  79. //開源代碼Vevb.com 
  80. public static function getfiletype($filename)  
  81. {  
  82. if(!self::$checkclass) self::$checkclass=new self($filename);  
  83. $class=self::$checkclass;  
  84. return $class->_getfiletype($filename);  
  85. }  
  86. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 筠连县| 安庆市| 赤峰市| 连江县| 保康县| 兴山县| 和静县| 双桥区| 龙川县| 黄龙县| 正安县| 无为县| 根河市| 无极县| 东港市| 黑龙江省| 礼泉县| 广平县| 错那县| 蓝田县| 方山县| 阳城县| 尖扎县| 涟水县| 通道| 老河口市| 罗城| 兰坪| 海盐县| 东方市| 永登县| 南和县| 敖汉旗| 庆城县| 凤翔县| 武安市| 淅川县| 日土县| 张掖市| 芦溪县| 广州市|