PHPで画像の種類を取得する方法

私はデータベースに画像の種類を取得しようとしていますが、以下は動作していません。画像がpng、jpeg、またはgifであるかどうかを検出するにはどうすればよいですか?

if(isset($_POST['submit'])) {
    $fileType = $_FILES['image']['type'];
    $tmpname = $_FILES['image']['tmp_name'];
    $fp = fopen($tmpname,'r');
    $data = fread($fp,filesize($tmpname));
    $data = addslashes($data);
    fclose($fp);

    $update = mysql_query("UPDATE avatar SET image1='$data',type='$fileType' WHERE username='$user'",$this->connect);
} else {
    echo "<form enctype='multipart/form-data' action='http://www.example.com/cp/avatar' method='post'>
        <div id='afield1' >Upload</div><div id='afield2'><input type='hidden' name='MAX_FILE_SIZE' value='102400' /><input type='file' size='25' name='image' /></div>
        <div id='asubmit'><input type='submit' name='submit' class='button' value='Save Changes' /></div>
        </form>";
}
3

1 答え

use getimagesize() or exif_imagetype()

// integer - for example: IMAGETYPE_GIF, IMAGETYPE_JPEG etc.
$type   = exif_imagetype($_FILES['image']['tmp_name']);

そして

$info   = getimagesize($_FILES['image']['tmp_name']);
$mime   = $info['mime'];//mime-type as string for ex. "image/jpeg" etc.
$width  = $info[0];     //width as integer for ex. 512
$height = $info[1];     //height as integer for ex. 384
$type   = $info[2];     //same as exif_imagetype

exif_imagetype getimagesize よりはるかに高速です。詳細については、ドキュメンテーションを確認してください。

14
追加された
MIMEタイプを取得するには mage_type_to_mime_type
追加された 著者 Suriyan Suresh,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com