класс загрузки php codeigniter - PullRequest
1 голос
/ 07 января 2011

это будет смутно ... я создал систему crud для управления "предложениями" в БД с полем загрузки как в форме создания, так и в форме обновления.

когда пользователь заходитдля редактирования у меня отображается изображение, но если они хотят загрузить новое, в форме обновления есть поле формы для загрузки нового изображения при отправке обновлений

сложная часть, если они этого не делаютхочу, чтобы $ this-> upload-> do_upload () выдавал ошибку, сообщающую, что изображение не указано

Для борьбы с этим я добавил, если (! empty ($ _ POST ['userfile'])) использовать толькокласс загрузки, если изображение было указано, но когда форма отправляется, это кажется пустым всегда, пока не дойдет до вызова функции класса загрузки ... вот код

$userfile = $this->input->post('userfile');//i have tried $_POST as well


if( ! empty($userfile))
            {
                if ( ! $this->upload->do_upload())
                {
                    $error = array('error' => $this->upload->display_errors());
                    echo $this->upload->display_errors();

                    $data['offer'] = $this->moffers->get_offer($this->input->post('id'));
                    $this->load->view('admin/admin_header');
                    $this->load->view('admin/edit',$data);
                    $this->load->view('admin/admin_footer');
                }   

любые идеи по решению того, чтоидет не так?поле загрузки работает нормально, когда я вынимаю условие empty (), но не будет работать, если пользователь не указывает файл для загрузки, который он может не всегда хотеть делать

<tr>
        <td>Upload a new image</td>
        <td><input type="file" name="userfile" size="40" /></td>
    </tr>

Ответы [ 2 ]

2 голосов
/ 07 января 2011

Сделайте это следующим образом:

    if(isset($_FILES['userfile']['tmp_name']) && !empty($_FILES['userfile']['tmp_name'])):
        if ( ! $this->upload->do_upload())
            {
                $error = array('error' => $this->upload->display_errors());
                echo $this->upload->display_errors();

                $data['offer'] = $this->moffers->get_offer($this->input->post('id'));
                $this->load->view('admin/admin_header');
                $this->load->view('admin/edit',$data);
                $this->load->view('admin/admin_footer');
            }
    endif;

Вот как я это сделал в одном из моих проектов codeigniter.

Я также создал помощника загрузки codeigniter, всегда может быть полезным;) -> http://blog.cmstutorials.org/freebees/codeigniter-free-upload-helper

0 голосов
/ 07 января 2011

Попробуйте это:

if( ! empty($userfile))
            {
                if ( ! $this->upload->do_upload())
                {
                    $error = array('error' => $this->upload->display_errors());
                    echo $this->upload->display_errors();
                }   
}


                    $data['offer'] = $this->moffers->get_offer($this->input->post('id'));
                    $this->load->view('admin/admin_header');
                    $this->load->view('admin/edit',$data);
                    $this->load->view('admin/admin_footer');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...