Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

CodeIgniter User Guide Version 2.1.0


Класс для загрузки файлов

Класс File Uploading позволяет загружать файлы. Вы можете установить различные настройки, ограничивая тип и размер загружаемых файлов.

Процесс

Загрузка файлов обычно выполняется в виде следующего процесса:

Вот краткое руководство, демонстрирующее этот процесс. Ниже вы найдете справочную информацию.

Создание загрузочной формы

Используя текстовый редактор, создайте форму upload_form.php. Поместите в нее этот код, и сохраните в директорию applications/views/:

Обратите внимание, что мы использовали помощник форм для открывающего тега. Загрузка файлов требует форму multipart, поэтому помощник создает для вас требуемый синтаксис. Также обратите внимание на то, что мы используем переменную $error. С ее помощью мы сможем отображать ошибки, если что-то произошло неправильно.

Страница успеха

Используя текстовый редактор создайте файл upload_success.php. В нем разместите этот код и сохраните его в вашу директорию applications/views/:

Контроллер

Используя текстовый редактор, создайте контроллер upload.php. Поместите в него этот код и сохраните в вашу директорию applications/controllers/:

Директория для загрузки

Вам нужна директория, куда будут загружаться картинки. Создайте директорию upload под корнем инсталляции CodeIgniter (document root сайта, рядом с index.php), и установите ее права в 777.

Попробуйте!

Чтобы попробовать вашу форму, посетите URL, соответствующий такому:

example.com/index.php/upload/

Вы должны увидеть форму для загрузки. Попробуйте загрузить файл изображения (jpg, gif или png). Если путь в вашем контроллере правильный, это должно работать.

Справка по функциям

Инициализация класса Upload

Как и большинство других классов в CodeIgniter, класс Upload инициализируется в вашем контроллере посредством функции $this->load->library:

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

Загруженный объект класса доступен через: $this->upload

Установка параметров

Как и с другими библиотеками, вы полностью контролируете, что разрешается загружать, в соответствии с указанными вами параметрами:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

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

// Также вы можете установить параметры, вызвав инициализирующую функцию. Это полезно, если вы загружаете класс автоматически (в автозагрузке):
$this->upload->initialize($config);

Параметры, указанные выше должны быть понятны. В таблице ниже описаны все доступные параметры.

Параметры

Доступны следующие параметры. Значения по умолчанию позволяют не указывать этот параметр.

Параметр Значение по умолчанию Опции Описание
upload_path Нет Нет Путь к директории, куда должны помещаться загруженные файлы. Директория должна быть записываемой, а путь может быть абсолютным или относительным.
allowed_types Нет Нет Типы MIME файлов, которые могут быть загружены. Обычно указываются расширения файлов, которые указывают на MIME тип. Можно указывать несколько значений через вертикальную черту |.
file_name Нет Desired file name

Если установлено, CodeIgniter переименует загруженный файл в указанное имя. Расширение должно быть в списке разрешенных.

overwrite FALSE TRUE/FALSE (boolean) Если установлено в TRUE, то если существует файл с таким же именем, как и загруженный, он будет перезаписан. Если установить в FALSE, к имени файла будет добавлена цифра, если существует аналогичный файл.
max_size 0 Нет Максимальный размер (в килобайтах), которого может быть файл. Установка в ноль снимет ограничения. Примечания: большинство инсталляций PHP имеют собственный лимит, обозначенный в файле php.ini. Обычно 2 мегабайта (2048 килобайт) по умолчанию.
max_width 0 Нет Максимально допустимая ширина изображения, в пикселях. Установка в ноль снимет ограничение.
max_height 0 Нет Максимально допустимая высота изображения, в пикселях. Установка в ноль снимет ограничение.
max_filename 0 Нет Максимальная длина имени файла. Установка в ноль снимет ограничение.
encrypt_name FALSE TRUE/FALSE (boolean) Если установить в TRUE, имя файла будет конвертировано в случайно зашифрованную строку. Может быть полезно, если вы хотите сохранить файл с именем, которое не может быть опознано загружающим, либо для простого предотвращения конфликтов имен и недопустимых символах в URL.
remove_spaces TRUE TRUE/FALSE (boolean) Если установить в TRUE, любые пробелы в файле будут конвертированы в символы подчеркивания. Рекомендуется.

Установка параметров в конфигурационном файле

Если вы не хотите устанавливать параметры указанным методом, вы можете поместить их в конфигурационный файл. Просто создайте новый файл, с названием upload.php, поместите в него массив $config. Потом сохраните его в config/upload.php и он будет использован автоматически. Вы НЕ должны использовать инициализирующую функцию $this->upload->initialize, если вы сохраните ваши параметры в конфигурационном файле.

Справка по функциям

Доступны следующие функции

$this->upload->do_upload()

Выполняет загрузку, основываясь на указанных вами параметрах. Примечание: по умолчанию ожидается имя поля userfile, и форма должна быть типа «multipart»:

<form method="post" action="some_action" enctype="multipart/form-data" />

Если вы хотите установить собственное имя поля, просто передайте его функции do_upload():

$field_name = "some_field_name";
$this->upload->do_upload($field_name)

$this->upload->display_errors()

Получает все сообщения об ошибках, если функция do_upload() вернула FALSE. Функция не делает вывод, вы можете присвоить возвращаемые данные, как пожелаете.

Форматирование ошибок

По умолчанию функция вписывает все ошибки в теги <p>. Вы можете установить собственные ограничители:

$this->upload->display_errors('<p>', '</p>');

$this->upload->data()

Это функция-помощник, которая возвращает массив, содержащий все данные загруженного файла. Вот прототип массива:

Array
(
    [file_name]    => mypic.jpg
    [file_type]    => image/jpeg
    [file_path]    => /path/to/your/upload/
    [full_path]    => /path/to/your/upload/jpg.jpg
    [raw_name]     => mypic
    [orig_name]    => mypic.jpg
    [client_name]  => mypic.jpg
    [file_ext]     => .jpg
    [file_size]    => 22.2
    [is_image]     => 1
    [image_width]  => 800
    [image_height] => 600
    [image_type]   => jpeg
    [image_size_str] => width="800" height="200"
)

Объяснение

Вот объяснение элементов массива.

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

Поделиться


Переведено в компании Аринт.

Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter

Яндекс.Метрика