4

重複の可能性:
GetImageSize() が FALSE を返す必要があるときに 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、イメージのタイプを示す定数の 1 つが含まれます。

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 に答える