2013-04-05 29 views
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(); 
    .... 

一切工作正常,除了當我得到一個錯誤。該視圖顯示兩次相同的錯誤:

您沒有選擇要上載的文件。
您沒有選擇要上傳的文件。

回答

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()中執行兩次。有條件的檢查從左到右運行。

+1

而且,我的惡魔是解決方案!謝謝 – user1351482 2013-04-05 12:43:44

相關問題