Heim > Backend-Entwicklung > PHP-Tutorial > php通过文件头检测文件类型的自定义类

php通过文件头检测文件类型的自定义类

WBOY
Freigeben: 2016-07-25 08:58:28
Original
843 Leute haben es durchsucht
  1. /* 通过文件名,获得文件类型*
  2. * @author chengmo*
  3. * @version 0.1
  4. * $filename="d:/1.png";echo cFileTypeCheck::getFileType($filename); 打印:png
  5. * edit bbs.it-home.org
  6. */
  7. class cFileTypeCheck
  8. {
  9. private static $_TypeList=array();
  10. private static $CheckClass=null;
  11. private function __construct($filename)
  12. {
  13. self::$_TypeList=$this->getTypeList();
  14. }
  15. /**
  16. *处理文件类型映射关系表*
  17. *
  18. * @param string $filename 文件类型
  19. * @return string 文件类型,没有找到返回:other
  20. */
  21. private function _getFileType($filename)
  22. {
  23. $filetype="other";
  24. if(!file_exists($filename)) throw new Exception("no found file!");
  25. $file = @fopen($filename,"rb");
  26. if(!$file) throw new Exception("file refuse!");
  27. $bin = fread($file, 15); //只读15字节 各个不同文件类型,头信息不一样。
  28. fclose($file);
  29. $typelist=self::$_TypeList;
  30. foreach ($typelist as $v)
  31. {
  32. $blen=strlen(pack("H*",$v[0])); //得到文件头标记字节数
  33. $tbin=substr($bin,0,intval($blen)); ///需要比较文件头长度
  34. if(strtolower($v[0])==strtolower(array_shift(unpack("H*",$tbin))))
  35. {
  36. return $v[1];
  37. }
  38. }
  39. return $filetype;
  40. }
  41. /**
  42. *得到文件头与文件类型映射表*
  43. *
  44. * @return array array(array(key,value)...)
  45. */
  46. public function getTypeList()
  47. {
  48. return array(array("FFD8FFE1","jpg"),
  49. array("89504E47","png"),
  50. array("47494638","gif"),
  51. array("49492A00","tif"),
  52. array("424D","bmp"),
  53. array("41433130","dwg"),
  54. array("38425053","psd"),
  55. array("7B5C727466","rtf"),
  56. array("3C3F786D6C","xml"),
  57. array("68746D6C3E","html"),
  58. array("44656C69766572792D646174","eml"),
  59. array("CFAD12FEC5FD746F","dbx"),
  60. array("2142444E","pst"),
  61. array("D0CF11E0","xls/doc"),
  62. array("5374616E64617264204A","mdb"),
  63. array("FF575043","wpd"),
  64. array("252150532D41646F6265","eps/ps"),
  65. array("255044462D312E","pdf"),
  66. array("E3828596","pwl"),
  67. array("504B0304","zip"),
  68. array("52617221","rar"),
  69. array("57415645","wav"),
  70. array("41564920","avi"),
  71. array("2E7261FD","ram"),
  72. array("2E524D46","rm"),
  73. array("000001BA","mpg"),
  74. array("000001B3","mpg"),
  75. array("6D6F6F76","mov"),
  76. array("3026B2758E66CF11","asf"),
  77. array("4D546864","mid"));
  78. }
  79. public static function getFileType($filename)
  80. {
  81. if(!self::$CheckClass) self::$CheckClass=new self($filename);
  82. $class=self::$CheckClass;
  83. return $class->_getFileType($filename);
  84. }
  85. }
  86. ?>
复制代码


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage