Когда я пытаюсь загрузить изображение, а затем просмотреть его в Codeigniter, я вижу noimage.jpg вместо этого загруженный

#php #codeigniter

#php #codeigniter

Вопрос:

Я пытаюсь создать сообщение с изображением, но когда я пытаюсь его загрузить, оно показывает только изображение по умолчанию (noimage.jpg ) вместо загруженного. Вот мой контроллер для создания сообщения

 public function create(){
        $data['title'] = 'Crear Entrada';

        $data['categories'] = $this->post_model->get_categories();

        $this->form_validation->set_rules('title', 'Title', 'required');
        $this->form_validation->set_rules('body', 'Body', 'required');

        if($this->form_validation->run() === FALSE){
            $this->load->view('templates/header');
            $this->load->view('posts/create', $data);
            $this->load->view('templates/footer');
        } else {
            // Upload Image
            $config['upload_path'] = './assets/images/posts';
            $config['allowed_types'] = 'gif|jpg|png';
            $config['max_size'] = '2048';
            $config['max_width'] = '500';
            $config['max_height'] = '500';

            $this->load->library('upload', $config);

            if(!$this->upload->do_upload()){
                $errors = array('error' => $this->upload->display_errors());
                $post_image = 'noimage.jpg';
            } else {
                $data = array('upload_data' => $this->upload->data());
                $post_image = $_FILES['userfile']['name'];
            }

            $this->post_model->create_post($post_image);
            redirect('posts');
        }

    }
 

Модель:

 public function create_post($post_image){
        $slug = url_title($this->input->post('title'));

        $data = array(
            'title' => $this->input->post('title'),
            'slug' => $slug,
            'body' => $this->input->post('body'),
            'category_id' => $this->input->post('category_id'),
            'post_image' => $post_image
        );

        return $this->db->insert('posts', $data);
 

И это HTML-код, с которого я пытаюсь загрузить изображения

     <div class="form-group">
    <label>Cargar Imagen</label>
    <input type="file" name="userfile" size="20">
    </div>
 

Ответ №1:

Шаг 1: укажите имя вашего файлового массива, который публикуется, замените $this->upload->do_upload() на $this->upload->do_upload('userfile') и выведите ошибку, добавив print_r($this->upload->display_errors()); , чтобы узнать точную ошибку, с которой вы столкнулись при загрузке файла.

Шаг 2: также всегда используйте имя файла, которое предоставляется $this->upload->data() . в вашем случае это будет выглядеть примерно так $data['upload_data']['file_name'] .