4

可能重复:
GetImageSize() 在应该返回 FALSE 时没有返回

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

   // 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() 以类似的方式检查文件类型?

4

3 回答 3

13

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;
    }
}
于 2012-10-06T16:25:48.737 回答
1

您可以使用如下

$img_info   = getimagesize($_FILES['image']['tmp_name']);
$mime   = $img_info['mime']; // mime-type as string for ex. "image/jpeg" etc.
于 2012-10-06T16:20:00.347 回答
1

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

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

于 2012-10-06T16:20:42.400 回答