#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']
.