我有一个用户注册表单,其他表单元素的上传图片是可选的。因此,有时用户可能无法将图像与其他数据一起上传。
现在问题是即使用户没有上传图片,下面的代码总是回显文件已上传
请您告诉我如何检查图像是否是由用户提交的,并且如果没有上传则使其回显/显示“未上传”?
提前致谢:)
在我的控制器文件
中extract($_POST); // <<This is to retrieve all form data at once
if(isset($_FILES['userfile'])){
echo"file uploaded";
} else{
echo "Not Uploaded";
}
这是在我的查看文件
中<input type="file" class="" name="userfile" size="20" />
答案 0 :(得分:16)
根据PHP文档:
如果表单中没有选择上传文件,PHP会将$ _FILES ['userfile'] ['size']返回为0,将$ _FILES ['userfile'] ['tmp_name']返回为无。
来源:http://www.php.net/manual/en/features.file-upload.post-method.php
因此您的条件可以更改为:
if(isset($_FILES['userfile']) && $_FILES['userfile']['size'] > 0){
echo"file uploaded";
} else echo "Not Uploaded" ;
答案 1 :(得分:2)
您可以结合两种检查:
if (count($_POST) and !empty($_FILES['userfile'])) {
// uploaded
}
else {
// either is missing
}
请注意,您应不使用extract($_POST);
。您无法控制从外部覆盖哪些局部变量。 (如果没有其他调查EXTR_PREFIX
。)