Загружать файлы и хранить заголовки в базе данных

0

Контроллер:

class gallery extends CI_Controller {

    function index()
    {
        $this->load->model('gallery_model');
        if($this->input->post('upload'))
        {
            $this->gallery_model->do_upload();
        }
        $data['images'] = $this->gallery_model->get_images();
        $this->load->view('gallery',$data);

}

} Модель:

<?php 

class gallery_model extends CI_Model {

    var $gallery_path;
    var $gallery_path_url;
    function gallery_model()
    {
        $this->gallery_path = realpath(APPPATH . '../images');
        $this->gallery_path_url = base_url().'images/';
    }

    function do_upload()

    {
        $config = array(
                'allowed_types' => 'jpeg|jpg|gif|png',
                'upload_path' => $this->gallery_path
            );
        $this->load->library('upload', $config);
        $this->upload->do_upload();
        $image_data = $this->upload->data();
        $config = array(
            'source_image' => $image_data['full_path'],
            'new_image' => $this->gallery_path. '/thumbs',
            'maintain_ration' => TRUE,
            'width' => 150,
            'height' =>150
            );
        $this->load->library('image_lib', $config);
        $this->image_lib->resize();

    }
}

Посмотреть:

<!DOCTYPE html>
<html>
<head>
    <title>My gallery</title>
    <meta charset="UTF-8"/>

</head>
<body>
<div id="upload">
    <?php 
        echo form_open_multipart('gallery');
        echo form_upload('userfile');
        echo form_submit('upload','Upload');
        echo form_close(); 
    ?>
</div>
</body>
</html>

Я хочу сделать что-то вроде фотоальбома. В форме загрузки я загружаю фотографии в папку с изображениями и большой палец в папку с большими пальцами. То, что я хочу сделать, - сохранить заголовки изображений в базе данных и получить оттуда, и я не знаю, как хранить названия изображений.

Теги:
codeigniter

1 ответ

0

Я бы добавил текстовое поле в форму для заголовка изображения, передал его методу do_upload из модели галереи или отдельно в новую модель базы данных изображений (чтобы подключиться и запросить вашу базу данных).

Я пишу это на лету и непроверен. Некоторые рекомендации для процесса, убедитесь, что вы очищаете входы. Codeigniter отлично справляется с этим, но это хорошая кодировка, чтобы поделиться этим советом. Кроме того, вам должно понравиться изображение с его названием. Возможно, я также перейду к базе данных, пути к пути изображения и/или к его указателю большого пальца. Это также облегчает вызов изображения из галереи, поскольку вы уже запрашиваете базу данных для метаданных. Что-то вроде foreach($img in$result){ echo $img['title']." - ".echo $img['path'];} для создания "My title" - http://example.com/images/thumb/1234.jpg "

Просмотр (ввод)

 ..
  echo form_input('imgTitle', 'Image Title');
 ..

контроллер

 ..
if($this->input->post('upload'))
 {
  $data['imgTitle'] = $this->input->post('imgTitle'); //Assigns the post value to the data array so you can pass it via $data to your views
  $this->gallery_model->do_upload($data['imgTitle']);
 }
..

Модель

 ..
function do_upload($imgTitle=null) //passes a variable as NULL unless specified
{
..
$DB1 = $this->load->database(); //specify db connection/name
$data = array(
  'title' => $imgTitle, //passed from controller
   'name' => 'My Name');
$this->db->insert('mytable', $data);
..
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню