Класс для загрузки файлов
Класс File Uploading позволяет загружать файлы. Вы можете установить различные настройки, ограничивая тип и размер загружаемых файлов.
Процесс
Загрузка файлов обычно выполняется в виде следующего процесса:
Отображается форма для загрузки, позволяя пользователям выбрать файл и загрузить его.
Когда форма передана, файл загружается по указанному вами назначению.
Параллельно файл подвергается валидации, чтобы убедиться, что он имеет соответствующий тип и другие параметры, как вы указали.
После загрузки пользователь увидит сообщение об успехе.
Вот краткое руководство, демонстрирующее этот процесс. Ниже вы найдете справочную информацию.
Создание загрузочной формы
Используя текстовый редактор, создайте форму upload_form.php. Поместите в нее этот код, и сохраните в директорию applications/views/:
Обратите внимание, что мы использовали помощник форм для открывающего тега.
Загрузка файлов требует форму multipart, поэтому помощник создает для вас требуемый синтаксис.
Также обратите внимание на то, что мы используем переменную $error. С ее помощью мы сможем отображать ошибки, если что-то произошло неправильно.
Страница успеха
Используя текстовый редактор создайте файл upload_success.php. В нем разместите этот код и сохраните его в вашу директорию applications/views/:
<p><?php echo anchor('upload', 'Загрузить другой файл!'); ?></p>
</body>
</html>
Контроллер
Используя текстовый редактор, напишите новый контроллер upload.php.
В route.php добавьте $route['upload'] = 'upload';
Поместите в upload.php этот код и сохраните в вашу директорию applications/controllers/:
<?php
class Upload extends CI_Controller {
function __construct()
{
//Вызываем помошников
parent::__construct();
$this->load->helper(array('form', 'url'));
}
function index()
{
//Загружаем форму загрузки файла
$this->load->view('upload_form', array('error' => ' ' ));
}
//Получает значение поля "userfile" из upload_form
if ( ! $this->upload->do_upload())
{
//если неудачно загрузили
$error = array('error' => $this->upload->display_errors());
Директория для загрузки
Вам нужна директория, куда будут загружаться картинки. Создайте директорию upload под корнем инсталляции CodeIgniter (document root сайта, рядом с index.php), и установите ее права в 777.
Попробуйте!
Чтобы попробовать вашу форму, посетите URL, соответствующий такому:
http://site/index.php/upload/
Вы должны увидеть форму для загрузки. Попробуйте загрузить файл изображения (jpg, gif или png). Если путь в вашем контроллере правильный, это должно работать.
Справка по функциям
Инициализация класса Upload
Как и большинство других классов в CodeIgniter, класс Upload инициализируется в вашем контроллере посредством функции $this->load->library:
$this->load->library('upload');
Загруженный объект класса доступен через: $this->upload
Установка параметров
Как и с другими библиотеками, вы полностью контролируете, что разрешается загружать, в соответствии с указанными вами параметрами:
// Также вы можете установить параметры, вызвав инициализирующую функцию. Это полезно, если вы загружаете класс автоматически (в автозагрузке):
$this->upload->initialize($config);
В таблице ниже описаны все доступные параметры.
Параметры
Доступны следующие параметры. Значения по умолчанию позволяют не указывать этот параметр.
$this->upload->do_upload()
Выполняет загрузку, основываясь на указанных вами параметрах. Примечание: по умолчанию ожидается имя поля userfile, и форма должна быть типа «multipart»:
$this->upload->display_errors()
Получает все сообщения об ошибках, если функция do_upload() вернула FALSE. Функция не делает вывод, вы можете присвоить возвращаемые данные, как пожелаете.
$this->upload->data()
Это функция-помощник, которая возвращает массив, содержащий все данные загруженного файла. Вот прототип массива: