Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上载表单两次抛出相同的错误_Php_Codeigniter_File Upload - Fatal编程技术网

Php 上载表单两次抛出相同的错误

Php 上载表单两次抛出相同的错误,php,codeigniter,file-upload,Php,Codeigniter,File Upload,我正在尝试使用CodeIgniter创建一个上传表单,让用户能够更改他们的个人资料图片。在我的控制器中有以下代码行: if(!$this->upload->do_upload() && empty($_FILES['userfile'])) { $data['upload'] = "0"; $this->load->view('editpicture', $data); } elseif (!$this->upload->do_

我正在尝试使用CodeIgniter创建一个上传表单,让用户能够更改他们的个人资料图片。在我的控制器中有以下代码行:

if(!$this->upload->do_upload() && empty($_FILES['userfile'])) {
    $data['upload'] = "0";
    $this->load->view('editpicture', $data);
} elseif (!$this->upload->do_upload() && !empty($_FILES['userfile'])) {
    $data['upload'] = "0";
    $data['attempt'] = "1";
    $data['error'] = $this->upload->display_errors();
    $this->load->view('editpicture', $data);        
} else {
    $upload_data = $this->upload->data();
    ....
除了我出错外,一切正常。该视图两次显示相同的错误:

您没有选择要上载的文件。
您没有选择要上载的文件

这样做:

if(!$this->upload->do_upload()) {
    if (empty($_FILES['userfile'])) {
        $data['upload'] = "0";
        $this->load->view('editpicture', $data);
    } else {
        $data['upload'] = "0";
        $data['attempt'] = "1";
        $data['error'] = $this->upload->display_errors();
        $this->load->view('editpicture', $data);       
    }
} else {
    $upload_data = $this->upload->data();
    ....
发生这种情况的原因是您正在运行两次
$this->upload->do_upload()
。第一个条件运行它以查看它是否为
FALSE
,然后检查
$\u FILES
是否为空以运行代码块

如果
$this->upload->do\u upload()
为真,并且
$\u FILES
为空,那么它将运行,但如果
$\u FILES
不为空,它将在下一个条件下运行,在该条件下再次运行
$this->upload->do\u upload()
。该函数在
if()
中执行了两次。条件检查从左到右运行。

执行以下操作:

if(!$this->upload->do_upload()) {
    if (empty($_FILES['userfile'])) {
        $data['upload'] = "0";
        $this->load->view('editpicture', $data);
    } else {
        $data['upload'] = "0";
        $data['attempt'] = "1";
        $data['error'] = $this->upload->display_errors();
        $this->load->view('editpicture', $data);       
    }
} else {
    $upload_data = $this->upload->data();
    ....
发生这种情况的原因是您正在运行两次
$this->upload->do_upload()
。第一个条件运行它以查看它是否为
FALSE
,然后检查
$\u FILES
是否为空以运行代码块


如果
$this->upload->do\u upload()
为真,并且
$\u FILES
为空,那么它将运行,但如果
$\u FILES
不为空,它将在下一个条件下运行,在该条件下再次运行
$this->upload->do\u upload()
。该函数在
if()
中执行了两次。条件检查从左到右运行。

我的朋友,这就是解决方案!谢谢你,我的朋友,这就是解决办法!非常感谢。