【问题标题】:Upload Form Throws Same Error Twice上传表单两次抛出相同的错误
【发布时间】:2013-04-05 10:12:15
【问题描述】:

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

一切正常,除非出现错误。视图两次显示相同的错误:

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

【问题讨论】:

    标签: php codeigniter file-upload


    【解决方案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() 中执行两次。条件检查从左到右运行。

    【讨论】:

    • 我的恶魔,这就是解决方案!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多