我正在尝试使用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;
}
答案 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”]是正确的。尝试将'更改为'