Php !检查图像上载字段时清空失败

Php !检查图像上载字段时清空失败,php,forms,file-upload,Php,Forms,File Upload,我有一个表单,大约有10个字段,最后一个是imageUpload字段,它不是必填字段。只有在填充字段时,我才尝试对文件执行exif检查。但正如标题所述!empty在检查是否已填充时失败,它会继续运行,就像那里有一个文件一样,这当然会引发警告警告:exif_imagetype():文件名在中不能为空 if(!empty($_FILES['imageUpload'])){ $allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETY

我有一个表单,大约有10个字段,最后一个是imageUpload字段,它不是必填字段。只有在填充字段时,我才尝试对文件执行exif检查。但正如标题所述!empty在检查是否已填充时失败,它会继续运行,就像那里有一个文件一样,这当然会引发警告<代码>警告:exif_imagetype():文件名在中不能为空

if(!empty($_FILES['imageUpload'])){
    $allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
    $detectedType = exif_imagetype($_FILES['imageUpload']['tmp_name']);
    $isImage = !in_array($detectedType, $allowedTypes);
    if(!empty($isImage)){
        $errormsg[] = 'This is not a valid image file.';
    }
}
这是该字段的一个var_转储<代码>数组(1){[“图像上传”]=>数组(5){[“名称”]=>字符串(0)”“[“类型”]=>字符串(0)”“[“tmp\U名称”]=>字符串(0)”“[“错误”]=>int(4)[“大小”]=>int(0)}


那么我做错了什么?

检查文件的
tmp\u名称

if (!empty($_FILES['imageUpload']['tmp_name'])) {
    // do stuff
}
请尝试以下代码:

if (!empty($_FILES['imageUpload']['tmp_name'])){
    $allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
    $detectedType = exif_imagetype($_FILES['imageUpload']['tmp_name']);
    $isImage = !in_array($detectedType, $allowedTypes);
    if(!empty($isImage)){
        $errormsg[] = 'This is not a valid image file.';
    }
}

$\u文件['imageUpload']不是空的,它包含一堆空字符串[“name”]=>string(0)”[“type”]=>string(0)”[“tmp\u name”]=>string(0)”[“error”]=>int(4)[“size”]=>int(0),如他所说。尝试检查其中一个是否为空。好的,这是可行的,但请向我解释为什么它不能以另一种方式工作,$\u文件数组的值都是0。这意味着!空检查可在$\u文件['imageUpload']中看到嵌套数组。结论:$\u文件['imageUpload']不是空的。