读取图片文件的真实后缀名

分类: 源代码 > PHP

/* 读取图片文件的真实后缀名 */
<?php
//根据文件的内容来判断图片类型,而不是根据文件的后缀名来判断图片的类型,因为图片的后缀名可以修改的
//图片的内容是二进制的;打开图片文件,默认以16进制打开的。
function get_file_type($file)
{
    $file = fopen($file, 'rb');
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);
    $typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);
    $fileType = '';
    switch($typeCode)
    {
        case 7790: $fileType = 'exe'; break;
        case 7784: $fileType = 'midi'; break;
        case 8297: $fileType = 'rar'; break;
        case 255216: $fileType = 'jpg'; break;
        case 7173: $fileType = 'gif'; break;
        case 6677: $fileType = 'bmp'; break;
        case 13780: $fileType = 'png'; break;
        default: echo 'unknown';
    }
    echo $fileType;    
}

function get_file_type2($file)
{
    $header = file_get_contents($file, 0, NULL, 0, 5);
//    echo bin2hex($header);
    if ($header{0}.$header{1} == "\x89\x50")
    {
        echo 'png';
    }
    if ($header{0}.$header{1} == "\xff\xd8")
    {
        echo 'jpeg';
    }
    if ($header{0}.$header{1}.$header{2} == "\x47\x49\x46")
    {
        if ($header{4} == "\x37")
        {
            echo 'gif87';
        }
        if ($header{4} == "\x39")
        {
            echo 'gif89';
        }
    }    
}

echo get_file_type('C:\wamp\php.exe');

来源:原创 发布时间:2020-08-18 21:08:48