2013-03-28 3 views
7

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

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'); 
    } 
} 
?> 

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

+0

Вы проверили [класс Updloading File] (http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html)? Это в значительной степени обрабатывает загрузку файлов. –

ответ

17

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

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

спасибо за это. –

2

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

(1) В вашем HomeController, загрузите изображение первого ($this->Image_upload_model->do_upload(), а затем обновить базу данных ($this->homemodel->addTenants()

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

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

2

Легко получить имя файла с $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, 
        ... 
       ); 
}