PHP二进制判断文件类型

  一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别。
  <?php
  $files = array('./test.jpg', 'test.png');
  $fileTypes = array(
  7790    => 'exe',
  7784    => 'midi',
  8075    => 'zip',
  8297    => 'rar',
  225216  => 'jpg',
  7173    => 'gif',
  6677    => 'bmp',
  13780   => 'png',
  );
  foreach($files as $file) {
  $fp = fopen($file, 'rb');
  $bin = fread($fp, 2); // 只读头两个字节
  fclose($fp);
  $strInfo = @unpack("C2chars", $bin);
  $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
  $fileType = isset($fileTypes[$typeCode]) ? $fileTypes[$typeCode] : 'unknown';
  echo $file , ' type : <b>', $fileType, '</b> code : <b>', $fileType, '</b><br />';
  }

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Grow your business fast with

Suku