7

私は 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();
    }
}
?>

ホームモデル.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');
    }
}
?>

どんな助けでも大歓迎です、ありがとう!

4

3 に答える 3

18

このようなファイル名を取得できます

  $upload_data = $this->upload->data(); 
  $file_name =   $upload_data['file_name'];
于 2013-03-28T15:53:28.640 に答える
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,
                    ...
                );
}
于 2015-12-08T03:37:47.923 に答える
2

非常に大まかに言うと、次のようにコードを再構築する必要があります。

(1)HomeControllerで、最初に画像をアップロードし ($this->Image_upload_model->do_upload()次に、データベースを更新します ($this->homemodel->addTenants()

(2) アップロード モデルでは、ファイル名を含む情報の配列を取得するために呼び出す必要があり$this->upload->data()ます (CodeIgniter のドキュメントを参照)。次に、そのファイル名を取得して HomeController で使用できるようにし、addTenants関数に渡す必要があります。

このガイダンスに従って、コードを適切に変更できるはずです。

于 2013-03-28T15:03:26.790 に答える