2013-04-05 3 views
1

Я пытаюсь создать форму загрузки с помощью CodeIgniter, чтобы дать пользователям возможность изменить изображение своего профиля. В моем контроллере имеются следующие строки кода:Upload Form Throw Same Error Twice

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() ИСТИНЫ и $_FILES пусто, то он будет работать, но если $_FILES не опустошить он будет работать следующее состояние, при котором вы запускаете $this->upload->do_upload() снова в состоянии. Затем функция выполняется в if() дважды. Условные проверки выполняются слева направо.

+1

И это, мой злодей, было решением! спасибо – user1351482