1

我有一个表单,用户可以在其中编辑他们的公共个人资料并在此过程中上传图片。一切正常,除了当用户上传照片或只是将其留空而不更改它时,它仍然会继续并尝试上传它并在它为空时抛出错误......我确实有一个检查,但是它只是忽略它。

if(isset($_FILES['userfile']))
    {
        $file_name = $this->session->userdata('user_id');
        $img = $this->custom_lib->img_upload('./upload/user/', $file_name);
        $user_pic = 'upload/user/'.$file_name.$img['file_ext'];
    } else {
        $user_pic = 'upload/default.png';
    }

我认为问题出在 if 语句中,但我看不出它可能是什么。如果我确实选择了一张图片,它会很好地上传它并且一切正常。如果我将图像字段留空(不选择文件)而不是这样做:

$user_pic = 'upload/default.png';

它尝试上传一个文件......它不存在......然后它抛出一个错误。img_upload() 函数在我制作的自定义库中,但是如果没有提交文件,甚至不应该调用该函数。

我很感激任何帮助!

4

1 回答 1

1

即使您正在检查的项目不包含任何内容、为 null 或为 false,isset也会返回 true。

为避免此问题,您可以像这样使用empty

if(!empty($_FILES['userfile']))

仅当 $_FILES['userfile'] 包含不为 null、false 或空的值时,这将返回 true。

希望有帮助:-)。

于 2012-09-22T23:59:14.337 回答