Codeigniter: как получить имя файла

Я новичок в Codeigniter, и я пытаюсь получить имя файла загруженного изображения, чтобы сохранить его в базе данных. У меня две модели, homemodel имеет дело с моей базой данных, а image_upload_model – с загрузкой изображений. Все работает отлично, за исключением того, что я не знаю, как отправить имя файла изображения в базу данных

image_upload_model.php

<?php class Image_upload_model extends CI_Model { var $image_path; //constructor containing the image path function Image_upload_model() { $this->image_path = realpath(APPPATH.'../assets/img'); } //uploading the file function do_upload() { $config = array( 'allowed_types' => 'jpg|jpeg|gif|png', 'upload_path' => $this->image_path ); $this->load->library('upload',$config); $this->upload->do_upload(); } } ?> 

homemodel.php

 <?php class homeModel extends CI_Model { //inserting into the table tenants function addTenants() { $this->load->model('Image_upload_model'); $data = array( 'Fname' => $this->input->post('Fname'), 'Lname' => $this->input->post('Lname'), 'contact' => $this->input->post('contact'), 'email' => $this->input->post('email'), 'location' => $this->input->post('location'), 'img_url' => " "//the filename of the image should go here ); $this->db->insert('tenants', $data); } } ?> 

Контроллер
homecontroller.php

 <?php class HomeController extends CI_Controller { public function index() { $this->load->helper('form'); $this->load->helper('html'); $this->load->model('homemodel'); $this->load->model('Image_upload_model'); if ($this->input->post('submit') == 'Submit') { $this->homemodel->addTenants(); echo 'inserted'; $this->Image_upload_model->do_upload(); echo 'image uploaded'; } $this->load->view('index.php'); } } ?> 

любая помощь приветствуется, спасибо!

Solutions Collecting From Web of "Codeigniter: как получить имя файла"

Вы можете получить имя файла, как это

  $upload_data = $this->upload->data(); $file_name = $upload_data['file_name']; 

На очень высоком уровне вам необходимо изменить структуру кода следующим образом:

(1) В своем HomeController сначала загрузите изображение ( $this->Image_upload_model->do_upload() а затем обновите свою базу данных ( $this->homemodel->addTenants()

(2) В вашей модели загрузки вам нужно вызывать $this->upload->data() чтобы получить информационный массив, содержащий имя вашего файла (см. Документацию CodeIgniter). Затем вы должны получить это имя файла и сделать его доступным для HomeController и передать его функции addTenants .

С помощью этого руководства вы должны соответствующим образом изменить свой код.

Легко получить имя файла с помощью $this->upload->file_name

на основе загрузки функции в system/library/upload.php

 public $file_name = ""; public function data() { return array ( 'file_name' => $this->file_name, 'file_type' => $this->file_type, ... ); }