Учебники

FuelPHP — загрузка файлов

Загрузка файлов является одной из наиболее часто используемых функций в программировании форм. 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 и попробуйте загрузить файл.