ホームページ > バックエンド開発 > PHPチュートリアル > PHP はファイル ヘッダーを通じてファイル タイプのカスタム クラスを検出します

PHP はファイル ヘッダーを通じてファイル タイプのカスタム クラスを検出します

WBOY
リリース: 2016-07-25 08:58:28
オリジナル
831 人が閲覧しました
  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 ファイルタイプ、見つかりません return: other
  20. */
  21. プライベート関数 _getFileType($filename)
  22. {
  23. $filetype="other";
  24. if(!file_exists($filename)) throw new Exception("ファイルが見つかりません!");
  25. $file = @fopen($filename,"rb");
  26. if(!$file) throw new Exception("file拒否 !");
  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(strto lower($v[0]); ==strto lower(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. パブリック関数 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. パブリック静的関数 getFileType($filename)
  80. {
  81. if(!self::$CheckClass) self ::$CheckClass=新しい self($filename);
  82. $class=self::$CheckClass;
  83. return $class->_getFileType($filename);
  84. }
  85. }
  86. ?>
コードをコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート