php 根据二进制(文件头)信息判断文件类型的方法

发布时间:2020-07-09编辑:脚本学堂
通常按照文件扩展名来判断文件类型,通过修改扩展名就可以轻易绕过去,这里提供一段根据二进制信息(文件头)来判断文件类型的代码,供大家参考。

根据文件头判断文件类型的完整代码。
 

复制代码 代码示例:
<?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 />';
}