今天用swoole的时候要获取后缀名,去网上找了找资料,发现了一个非常有意思的反常规的获取文件后缀的方式,值得学习一下。
一言不合就贴代码:
$tempfile = @fopen($img, "rb");
$bin = fread($tempfile, 2); //只读2字节
fclose($tempfile);
$strInfo = @unpack("C2chars", $bin);
$typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);
$fileType = '';
switch ($typeCode){ // 6677:bmp 255216:jpg 7173:gif 13780:png 7790:exe 8297:rar 8075:zip tar:109121 7z:55122 gz 31139
case '255216':
$fileType = 'jpg';
break;
case '7173':
$fileType = 'gif';
break;
case '13780':
$fileType = 'png';
break;
default:
$fileType = 'unknown';
}
他不同于
pathinfo
(
$file
, PATHINFO_EXTENSION);
这个PHP内置的方法读取后缀,直接读的文件头,这大大的避免了用户的恶意木马上传!