主页 > 知识库 > 网络编程 > PHP >

PHP

PHP二进制判断文件类型

来源:中国IT实验室 作者:佚名 发表于:2013-02-27 14:55  点击:
一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别。 ?php $files = array(./test.jpg, test.png); $fileTypes = array( 7790 = exe, 7784 = midi, 8075 = zip, 8297 = rar, 22
  一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别。
  <?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 />';
  }

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%