如何检查图像是否与其他表单数据一起提交

时间:2012-02-03 22:45:20

标签: php codeigniter codeigniter-2

我有一个用户注册表单,其他表单元素的上传图片是可选的。因此,有时用户可能无法将图像与其他数据一起上传。

现在问题是即使用户没有上传图片,下面的代码总是回显文件已上传

请您告诉我如何检查图像是否是由用户提交的,并且如果没有上传则使其回显/显示“未上传”?

提前致谢:)

在我的控制器文件

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" />

2 个答案:

答案 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。)