PHP 判断一个文件是否为图片类型

在PHP中我们经常要使用到针对用户上传的图片的处理,比如用户头像、商品图片等,要控制使用者上传的文件是一个图片类型而不能是随便的一个文件格式,如果不进行控制不仅系统可能存在安全隐患,而且对于业务逻辑来说也没有处理完善。此文档总结如何在PHP中判断一个文件是否为图片类型的多种方法的使用

W3CAPI
1
2020-04-23 08:24:27
文档目录
我的书签
 

PHP 读取文件数据来判断文件是否为图片类型

对于图片来说,它本身也是二进制数据组成,而且它的数据组成是根据一定的规则进行的,分析几种通用的图片文件结构,可以发现他们的前 2 个字节是表示这个图片文件类型的数据,我们可以获取给定文件的前两个字节来判断文件是不是图片文件类型,代码如下:
function  isImage($filepath) {
    $file = fopen($filepath, "rb");
    $bin = fread($file, 2);  // 只读2字节
    fclose($file);
    $strInfo  = @unpack("C2chars", $bin);
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
    $fileType = '';

    //255216 -> jpg,7173 -> gif ,13780 -> png 仅允许上传jpg/jpeg/gif/png格式的图片
    if($typeCode == 255216  || $typeCode == 7173  || $typeCode == 13780 )  {
        return $typeCode;
    } else  {
        return false;
    }
}
友情提示