Я знаю, что этот вопрос задавали несколько раз, но весь другой вопрос, который я нашел, отличается от того, что я хочу.
Я хочу загрузить имя файла и путь к файлу с именем «factoryimages».
Каков наилучший способ сделать это?
Моя функция контроллера:
function do_upload() { $config['upload_path'] = './assets/uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '1000'; $config['max_width'] = ''; $config['max_height'] = ''; $config['overwrite'] = TRUE; $config['remove_spaces'] = TRUE; $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { $error = array('error' => $this->upload->display_errors()); $this->load->view('members/header'); $this->load->view('members/upload_form', $error); $this->load->view('members/footer'); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('members/header'); $this->load->view('members/upload_success', $data); $this->load->view('members/footer'); } }
Я попробовал это в своей модели, но это не сработало:
function insert_images() { $insert_data = array( 'filename' => $image_data['file_name'], 'fullpath' => $image_data['full_path'] ); $this->db->insert('bedrijfimages', $insert_data); }
Мой взгляд:
<?php echo $error;?> <br/> <?php echo form_open_multipart('upload/do_upload');?> <input type="file" name="userfile" size="20" multiple="true" /> <br /><br /> <input type="submit" value="upload" /> </form>
Я получаю ошибку сервера, но я не вижу, что это такое.
Моя функция контроллера:
function do_upload() { $config['upload_path'] = './assets/uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '1000'; $config['max_width'] = ''; $config['max_height'] = ''; $config['overwrite'] = TRUE; $config['remove_spaces'] = TRUE; $this->load->library('upload', $config); if ( ! $this->upload->do_upload()) { $error = array('error' => $this->upload->display_errors()); $this->upload_model->insert_images($this->upload->data()); $this->load->view('members/header'); $this->load->view('members/upload_form', $error); $this->load->view('members/footer'); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('members/header'); $this->load->view('members/upload_success', $data); $this->load->view('members/footer'); } }
Моя модельная функция:
function insert_images($data = array()) { $data = array( 'filename' => $image_data['file_name'], 'fullpath' => $image_data['full_path'] ); $this->db->insert('bedrijfimages', $data); }
В чем может быть проблема?
Вы должны передать эти данные в свою вставку в виде массива $this->upload->data()
На вашем контроллере вы должны установить, когда выполняется проверка
else { $this->MODELNAME->insert_images($this->upload->data()); $data = array('upload_data' => $this->upload->data()); $this->load->view('members/header'); $this->load->view('members/upload_success', $data); $this->load->view('members/footer'); }
И у вашей модели:
function insert_images($image_data = array()){ $data = array( 'filename' => $image_data['file_name'], 'fullpath' => $image_data['full_path'] ); $this->db->insert('bedrijfimages', $data); }
Вы можете проверить, какая информация находится внутри этого массива на странице документации CI: библиотека загрузки Codeigniter