Загрузка файлов codeigniter

Codeigniter загрузка файлов и сохранение пути в БД

Здравствуй читатель, сегодня рассмотрим загрузку файлов на сервер в Codeigniter  от а до я.

Для начала создадим форму для загрузки файлов.

<?php $this->load->helper('form'); $this->load->helper('url');?> — используем хэлперы формы и урл для формирования правильной формы, атрибут такой формы будет формироваться в зависимости от $config['base_url'] — установленного в файле конфигурации Codeignater (application — config — comfig.php).

 

<?php echo form_open_multipart('http://'.base_url().'index.php/admin/edit_fotosession_img/'.$item['post_id']);?>

<input class="text-center" type="file" name="userfile" >

<br>

<input class="btn-success btn-lg" name='download' type="submit" value= "Загрузить новый лого">

<?=form_close()?>

$item[‘post_id’] — это id записи в БД, в запись мы внесем новый путь к логотипу.

Теперь напишем саму функцию загрузки файлов на сервер с помощью Codeignater.

public function edit_fotosession_img($id) {

if($this->input->post('download')) {

$config['upload_path'] ='images';

$config['allowed_types'] = 'gif|jpg|png|jpeg';

$config['max_size'] = '150000';

$this->load->library('upload', $config);

if ( !$this->upload->do_upload())

{ echo $config['upload_path']; echo $this->upload->display_errors(); }

else { $data=$this->upload->data(); $img_puth='images/'.$data['file_name']; $this->db->query("UPDATE post SET post_img='$img_puth' WHERE post_id='$id'"); echo'<script>alert("Изображение удалено!"); history.go(-1)</script>';}

} //echo'не нажата кнопка загрузки';)

}

 

Рассмотрим подробнее данный код.

if($this->input->post(‘download’))  -если нажата кнопка загрузки ( можно обойтись и без этой проверки)

$config[‘upload_path’] =’images’; — указываем в массиве настроек библиотеки загрузки файлов путь куда загружать файлы, стоит обратить внимание что тут не нужно использовать base_url(). Просто задаем путь от корневого каталога. Обратите внимание на то что папка должна иметь разрешение для записи (Права 777)!!!

$config[‘allowed_types’] = ‘gif|jpg|png|jpeg’; — разрешенные для загрузки расширения файлов

$config[‘max_size’] = ‘150000’; -максимальный размер загружаемого файла (Кб)

$this->load->library(‘upload’, $config); — подключаем библиотек загрузки файлов и передаем ей массив настроек

if ( !$this->upload->do_upload()) — загрузка файлов и проверка результатов загрузки  ( удачная \ неудачная)

$data=$this->upload->data(); —  заносим в переменную   $data информацию о загруженном файле, $this->upload->data() — предоставляет достаточно полную информацию о загруженном файле.

$img_puth=’images/’.$data[‘file_name’]; — вносим в переменную $img_puth   путь к нашему файлу

Ну а дальше вносим путь к только что загруженному файлу в БД.

echo'<script>alert(«Изображение удалено!»); history.go(-1)</script>’; — выводим сообщение о успешной загрузке и переходим на одну страницу назад, т е возвращаемся обратно на страницу загрузки файла.

Подробнее о возможностях и параметрах библиотеки загрузки файлов ві можете узнать из документации Codeigniter, а возможности довольно широки!)

Ну вообщем то это все что нужно для реализации простой загрузки файлов с помощью Codeigniter.

 

 

Параметры передаваемые библиотеке загрузки файлов (upload)

Пример передачи параметров

$config['max_size'] = '150000';

$this->load->library('upload', $config);

Параметр Значение по умолчанию Опции Описание
upload_path Нет Нет Путь к папке, куда осуществляется загрузка.
allowed_types Нет Нет Формат файлов,  разрешенных для загрузки.
overwrite FALSE TRUE/FALSE (boolean) Разрешение на перезапись файла с таким же именем
max_size 0 Нет Максимальный размер загружаемого файла (в Кб).
max_width 0 Нет Максимальная ширина картинки в пикселях. 0 — не ограниченно.
max_height 0 Нет Максимальная высота картинки в пикселях. 0 — не ограниченно.
encrypt_name FALSE TRUE/FALSE (boolean) Если TRUE, то имя файла преобразуется в случайным образом сгенерированную строку.
remove_spaces TRUE TRUE/FALSE (boolean) Если TRUE, заменяет пробелы в имени файла на нижнее подчеркивание

Получение данных о загруженном файле

$this->upload->data() — возвращает массив с основной  информацией о загруженном файле.

Вот поля массива, возвращаемого функцией data() 

Поле Описание
file_name Имя загруженного файла, включая расширение.
file_type MIME-тип файла
file_path Абсолютный путь к файлу на сервере.
full_path Абсолютный путь до файла на сервере, включая имя файла
raw_name Имя файла без расширения
orig_name Первоначальное имя файла. Используется только при включенной опции encrypted_name.
file_ext Расширение файла с точкой
file_size Размер файла в килобайтах
is_image Проверка на предмет является ли файл изображением. 1 = изображение. 0 = нет.
image_width Ширина изображения.
image_heigth Высота изображения
image_type Тип изображения. Как правило — расширение файла без точки.
image_size_str Строка, включающая в себя параметры width и height. Полезно использовать внутри тэга img.

Информация о параметрах  передаваемых библиотеке загрузки и массиве, возвращаемом функцией  data()  взята с сайта посвященному Codeigniter
 

 


Добавить комментарий