PHP:exif_imagetype()不让我上传任何类型的图片?

时间:2016-05-23 20:23:46

标签: php image

我正在尝试使用PHP限制上传的文件,仅限于某些类型的图像。 这就是我尝试过的:

这是表单输入字段:

<input type="file" id="dni" name="dni">

这是结帐流程:

if (exif_imagetype($_FILES['dni']["name"]) != IMAGETYPE_GIF || IMAGETYPE_JPEG || IMAGETYPE_PNG) {
    echo 'Only images!';
    exit;
}

我尝试过使用$_FILES['dni']["name"]$_FILES['dni']["tmp_name"]

也许我的情况不是以正确的方式写作,我也尝试过:

if (exif_imagetype($_FILES['dni']["name"]) != IMAGETYPE_GIF) { ...

之后我尝试上传了一张gif图片。

我试图上传gif和jpeg图片,但我一直收到错误(“只有图片!”消息)。

更新

我修改了代码,但仍无效:

if (exif_imagetype($_FILES['dni']['name']) != IMAGETYPE_GIF 
        AND exif_imagetype($_FILES['dni']['name']) != IMAGETYPE_JPEG 
        AND exif_imagetype($_FILES['dni']['name']) != IMAGETYPE_PNG) {
        echo 'Only images!';
    exit;
}

1 个答案:

答案 0 :(得分:2)

你没有正确比较它们,试试这个:

if (exif_imagetype($_FILES["dni"]["tmp_name"]) != IMAGETYPE_GIF && exif_imagetype($_FILES["dni"]["tmp_name"]) != IMAGETYPE_JPEG && exif_imagetype($_FILES["dni"]["tmp_name"]) != IMAGETYPE_PNG) {
    echo 'Only images!';
    exit;
}

您使用了|| (或)代替&amp;&amp; (和)。如果图像类型不等于所有这些,则需要显示错误。如果您使用OR,它将始终显示它,因为它不能同时显示所有类型。

另外,似乎$ _FILES [“dni”] [“tmp_name”]是正确的。尝试将'更改为'