1

我正在尝试使用 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();
    ....

一切正常,除非我遇到错误。该视图两次显示相同的错误:

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

4

1 回答 1

1

做这个:

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,然后检查$_FILES它是否为空以运行代码块。

好吧,如果$this->upload->do_upload()为 TRUE 并且$_FILES为空,那么它将运行,但如果$_FILES不为空,它将运行下一个条件,您$this->upload->do_upload()在该条件下再次运行。然后该函数正在执行if()两次。条件检查从左到右运行。

于 2013-04-05T10:18:48.063 回答