Загрузка файлов является одной из наиболее часто используемых функций в программировании форм. FuelPHP предоставляет специальный класс Upload для обработки загрузки файлов. Давайте узнаем, как загрузить файл с помощью класса Upload в этой главе.
конфигурация
Класс загрузки может быть настроен с использованием отдельного файла конфигурации fuel / app / config / upload.php . Важные записи конфигурации следующие:
-
max_size — устанавливает максимальный размер файла для загрузки. «0» означает неограниченный размер загрузки
-
ext_whitelist — устанавливает допустимые расширения файлов
-
ext_blacklist — устанавливает запрещенные расширения файлов
-
type_whitelist — устанавливает допустимые типы файлов. Например, «текст» для MIME типа «текст / обычный»
-
type_blacklist — устанавливает запрещенные типы файлов
-
mime_whitelist — устанавливает разрешенные типы файлов MIME. Например, «текст / обычный»
-
mime_blacklist — устанавливает запрещенные типы файлов MIME.
-
префикс — строка префикса в имени файла при сохранении загруженного файла на сервер
-
суффикс — строка с суффиксом в имени файла при сохранении загруженного файла на сервер
-
extension — расширение загружаемого файла для установки
-
create_path — создавать ли путь к файлу, если он недоступен
-
перезаписать — перезаписать существующий файл при сохранении загруженного файла
-
auto_rename — переименовывать ли файл путем добавления порядкового номера при сохранении загруженного файла
-
randomize — создавать ли случайное 32-символьное имя для сохранения загруженного файла
max_size — устанавливает максимальный размер файла для загрузки. «0» означает неограниченный размер загрузки
ext_whitelist — устанавливает допустимые расширения файлов
ext_blacklist — устанавливает запрещенные расширения файлов
type_whitelist — устанавливает допустимые типы файлов. Например, «текст» для MIME типа «текст / обычный»
type_blacklist — устанавливает запрещенные типы файлов
mime_whitelist — устанавливает разрешенные типы файлов MIME. Например, «текст / обычный»
mime_blacklist — устанавливает запрещенные типы файлов MIME.
префикс — строка префикса в имени файла при сохранении загруженного файла на сервер
суффикс — строка с суффиксом в имени файла при сохранении загруженного файла на сервер
extension — расширение загружаемого файла для установки
create_path — создавать ли путь к файлу, если он недоступен
перезаписать — перезаписать существующий файл при сохранении загруженного файла
auto_rename — переименовывать ли файл путем добавления порядкового номера при сохранении загруженного файла
randomize — создавать ли случайное 32-символьное имя для сохранения загруженного файла
Методы загрузки
Класс загрузки предоставляет опции для обработки и сохранения файла, загруженного пользователями. Каждый обработанный файл (перед сохранением) будет иметь следующую информацию в массиве результатов.
-
field — Имя поля формы
-
name — имя загруженного файла
-
type — тип файла, определенный браузером
-
mimetype — тип файла, определенный классом Upload.
-
file — Полное имя временного расположения загружаемого файла
-
filename — имя файла загруженного файла
-
extension — расширение загружаемого файла
-
размер — размер загружаемого файла в байтах
-
ошибки — массив ошибок с кодом ошибки и сообщением
-
error — устанавливать ли ошибки массива, почему загрузка не удалась (в случае неудачи при загрузке)
field — Имя поля формы
name — имя загруженного файла
type — тип файла, определенный браузером
mimetype — тип файла, определенный классом Upload.
file — Полное имя временного расположения загружаемого файла
filename — имя файла загруженного файла
extension — расширение загружаемого файла
размер — размер загружаемого файла в байтах
ошибки — массив ошибок с кодом ошибки и сообщением
error — устанавливать ли ошибки массива, почему загрузка не удалась (в случае неудачи при загрузке)
После сохранения файлов на сервере массив результатов также будет содержать следующую информацию.
-
save_to — полностью определенный путь, куда был сохранен загруженный файл
-
save_as — имя файла, который был сохранен
-
ошибки — обновленный массив ошибок
save_to — полностью определенный путь, куда был сохранен загруженный файл
save_as — имя файла, который был сохранен
ошибки — обновленный массив ошибок
Теперь давайте посмотрим на метод класса Upload.
является действительным
is_valid возвращает true, если какой-либо действительный файл загружен пользователем.
// do we have any uploaded files to save? if (Upload::is_valid()) { // process }
get_files
get_files возвращает все загруженные файлы в виде многомерного массива. Если указан индекс / имя файла ввода формы, он вернет загруженный файл, относящийся только к указанному файлу ввода.
foreach(Upload::get_files() as $file) { // do something with the file info } if ( Upload::get_files(0)) { // do something }
get_errors
get_errors возвращает массив ошибок, если не удалось загрузить один или несколько файлов. Если указан индекс / имя имени для ввода файла формы, он вернет ошибку, относящуюся только к указанному файлу ввода.
foreach(Upload::get_errors() as $file) { // do something with the file info } if (Upload::get_errors('myimage')) { // do something }
Процесс
Процесс относится к фактическому процессу сбора информации о загруженном файле. Мы можем предоставить новую пользовательскую конфигурацию, используя массив. Если конфигурация не указана, она будет использовать конфигурацию, определенную в fuel / app / config / upload.php
Upload::process (array( 'auto_rename' => false, 'overwrite' => true ));
спасти
сохранить относится к фактическому процессу сохранения всех проверенных файлов в правильном месте. Мы можем указать индекс для сохранения только этой конкретной записи.
Upload::save(); Upload::save(0); Upload::save(0, 3);
Рабочий пример
Давайте создадим новый контроллер Controller_Upload в нашем примере сотрудника, чтобы проверить функциональность загрузки.
Шаг 1 — Создайте файл fuel / app / classes / controller / upload.php . Создать контроллер загрузки.
<?php class Controller_Upload extends Controller { }
Шаг 2 — Создайте новое действие get_upload.
<?php class Controller_Upload extends Controller { public function get_index() { return \View::forge("upload/index"); } }
Шаг 3 — Создайте новый вид для созданного действия.
<!DOCTYPE html> <html> <body> <form action = "/upload/index" method = "post" enctype = "multipart/form-data"> Select image to upload: <input type = "file" name = "fileToUpload" id = "fileToUpload"> <input type = "submit" value = "Upload Image" name = "submit"> </form> </body> </html>
Шаг 4 — Создайте новое действие post_action для обработки загруженного файла.
<?php class Controller_Upload extends Controller { public function get_index() { return \View::forge("upload/index"); } public function post_index(){ $config = array( 'path' => DOCROOT.'files', 'randomize' => true, 'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'), ); Upload::process($config); // if there are any valid files if (Upload::is_valid()) { Upload::save(); echo "success"; } else { // and process any errors foreach (Upload::get_errors() as $file) { echo var_dump($file); } } } }
Наконец, запустите приложение, запросив URL, http: // localhost: 8080 / upload / index и попробуйте загрузить файл.