php如何使用getimagesize()检查上传时的图像类型

时间:2012-10-06 16:16:48

标签: php image upload filter mime-types

  

可能重复:
  GetImageSize() not returning FALSE when it should

我目前有一个过滤系统如下:

   // Check to see if the type of file uploaded is a valid image type
function is_valid_type($file)
{
    // This is an array that holds all the valid image MIME types
    $valid_types = array("image/jpg", "image/JPG", "image/jpeg", "image/bmp", "image/gif", "image/png");

    if (in_array($file['type'], $valid_types))
        return 1;
    return 0;
}

但我被告知最好自己检查文件类型,我如何使用getimagesize()以类似的方式检查文件类型?

3 个答案:

答案 0 :(得分:10)

getimagesize()返回一个包含7个元素的数组。数组的索引2包含一个IMAGETYPE_XXX常量,表示图像的类型。

使用getimagesize()提供的功能相当于

function is_valid_type($file)
{
    $size = getimagesize($file);
    if(!$size) {
        return 0;
    }

    $valid_types = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP);

    if(in_array($size[2],  $valid_types)) {
        return 1;
    } else {
        return 0;
    }
}

答案 1 :(得分:1)

您可以使用以下

$img_info   = getimagesize($_FILES['image']['tmp_name']);
$mime   = $img_info['mime']; // mime-type as string for ex. "image/jpeg" etc.

答案 2 :(得分:1)

首先检查getimagesize是否返回false。如果是,则该文件不是可识别的图像格式(或根本不是图像)。

否则,获取返回数组的索引2并通过image_type_to_mime_type运行它。这将返回一个字符串,如“image / gif”等。有关详细信息,请参阅docs