一般情况下我们都是按照文件扩展名来判断文件类型,但这种方法不是很准确,只要简单的修改扩展名就可以改变,正确的方式是要读取文件信息来判断。
<?php
$fileName = 'test.exe';
$fileTypes = array(
7790 => 'exe',
7784 => 'midi',
8075 => 'zip',
8297 => 'rar',
225216 => 'jpg',
7173 => 'gif',
6677 => 'bmp',
13780 => 'png',
);
$fp = fopen($fileName, '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 $fileName , ' type : <b>', $fileType, '</b> code : <b>', $fileType, '</b><br />';
?>
文章摘自 php读取文件信息判断文件类型