Контроллер:
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>
Я хочу сделать что-то вроде фотоальбома. В форме загрузки я загружаю фотографии в папку с изображениями и большой палец в папку с большими пальцами. То, что я хочу сделать, - сохранить заголовки изображений в базе данных и получить оттуда, и я не знаю, как хранить названия изображений.
Я бы добавил текстовое поле в форму для заголовка изображения, передал его методу 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);
..
}