Компонент регистрирует новый тип поля chunk_uploader который может загружать файлы больших размеров по частям, отображая ход загрузки.
Он реализован на базе библиотеки plupload которая предоставляет кросс-браузерный загрузчик файлов, позволяющий разбивать большие файлы на части и отправлять их на сервер.
При запуске эта библиотека проверяет возможности браузера и на их основе инициирует свой тип загрузчика, за счет чего и достигается кросс-браузерность.
Проверка осуществляется в следующем порядке: html5, flash, silverlight, html4.
Так же поле позволяет загружать файлы не имея итема записи, т.е если (за пример возьмем Nodus) данное поле добавить в список полей какого-либо термина, то при добавлении термина загрузка файлов будет доступна сразу, без необходимости вначале сохранить термин, а потом только загружать файлы. (для работы этой фичи необходимо обновить tao до 2.1.53)
Настройки компонента
Настроить компонент можно следующими способами:
- Отредактировав файл app/config/uploader.php в директории компонента: в этом случае задаются параметры по умолчанию для всех полей этого типа на сайте.
- При описании поля добавить эл-т с ключом uploader и в нем указать необходимые директивы - в этом случае можно настроить параметры для конкретного поля в отдельности.
Какие параметры можно указывать
- tmp_dir - адрес временного каталога куда будут сохраняться файлы, по умолчанию используется директория CMS::temp_dir() .'/plupload'. Так же при загрузке в этой директории для каждого пользователя (сессии) создаются свои подкаталоги. Это необходимо для того чтобы разделить файлы разных пользователей.
- cleanup - автом. очищение временной директории
- max_file_age - макс. возраст файлов (в секундах) во временной директории, по достижении которого они автоматически удаляются.
- allow_extensions - разрешенные типы файлов, массив ввида
array( 'Заголовок' => 'расширения через запятую', 'Изображения' => 'jpg,jpeg,gif,png', 'Архивы' => 'rar,zip,tar,gzip' ... )
- max_file_size - макс. допустимый размер загружаемого файла в байтах. Так же можно использовать суффиксы b, kb, mb, gb, tb. По умолчанию не ограничивается
- chunk_size - размер одной порции файла который отсылается на сервер. По этому размеру файл делится на части. По умолчанию минимальное из директив php.ini upload_max_filesize и post_max_size
- max_retries - кол-во попыток отправки файла (или его части) в случае возникновения какой-либо сетевой ошибки
- multiple - возможность множественной загрузки
- auto_start - загружать файлы сразу после выбора, в противном случае после выбора файла появится еще кнопка "Загрузить"
- dragdrop - позволяет включить возможность перетаскивания файлов в окно браузера, будет работать если браузер поддерживает данную возможность.
- uploaded_filename - с помощью этого параметра можно указать callback функцию для конвертации имени загружаемого файла. На вход этой функции будет передан массив описывающий загруженный файл, аналогичный массиву из глобальной переменной $_FILES. По умолчанию имя файла обрабатывается следующим способом: пробелы заменяются на -, русские буквы транслитерируются и в случае совпадения имен загруженных файлов к имени добавляется числовой индекс
- upload_validate - callback для проверки валидности загруженного файла. На вход передаются 2 параметра: $file_array (см. выше) и $file_name новое имя файла под которым он будет сохранен на диске.
- resize - авто изменение размера изображения на стороне клиента
... resize => array( // макс. ширина 'width' => 200, // макс. высота 'height' => 200, // качество 'quality' => 90, // обрезать или масштабировать 'crop' => false, ), ...