在php意外错误中检查图像mime类型

时间:2012-08-31 01:42:15

标签: php image

我试图确定图像的mime类型:

$image = $_FILES['image'];  //code shortened
function determineImage($imageResource){

    $errors = array();

    $types = array('gif' => IMAGETYPE_GIF,
                   'jpeg' => IMAGETYPE_JPEG,
                   'png' => IMAGETYPE_PNG,
                   'bmp' => IMAGETYPE_BMP);


    if ( !in_array(exif_imagetype($imageResource['tmp_name']), $types )) {
        $errors[] =  'Cannot determine mime type';
    }

    if ($imageResource['type'] !== 'image/gif'   ||
        $imageResource['type'] !== 'image/jpeg'  || 
        $imageResource['type'] !== 'image/pjpeg' ||
        $imageResource['type'] !== 'image/png'){
            $errors[] = 'Again cannot determine type';
    }

    return $errors;

}

我用

   var_dump(determineImage($image)); 

这保持返回数组(1){[0] => string(27)“再次无法确定类型”}

但是这个:

echo $image['type'];

只返回:

image/png

我也启用了error_reporting(E_ALL)。任何人都能弄明白问题是什么,我犯了一个愚蠢的错误吗?

1 个答案:

答案 0 :(得分:0)

代码是完全随机的(检查根本没有意义)

顺便说一下

if ($imageResource['type'] !== 'image/gif'   AND
    $imageResource['type'] !== 'image/jpeg'  AND
    $imageResource['type'] !== 'image/pjpeg' AND
    $imageResource['type'] !== 'image/jpg'  ...

而不是OR