Параметры
Параметр | Тип | Описание |
cssSelectorForOpen | string | Селектор для открытия окна загрузки файлов |
expanding | array | Расширения для загрузки файлов на сервер. Если файл не соответсвует расширению - загрузка игнорируется. |
maxFileSize | int | Размер файла для загрузки в MB. Если файл превышает размер - загрузка игнорируется. |
jsCallback | jsCode | java-script код который выполнится после загрузки файлов. В сигнатуре доступен объект data в котором хранится информация о загруженных файлах. |
$this->component('helpers/fileUploader/init',
[
'cssSelectorForOpen' => '.js_fileUpload',
'expanding' => [
'.jpg',
'.png',
],
'maxFileSize' => 2,
'jsCallback' => "prFileUploadInsertResult(data, '.js_fileUploadResult', 'files');",
]
);
Стандартный jsCallback
prFileUploadInsertResult(data, 'Селектор для вставки результата загрузки', 'Имя массива в котором будут храниться ссылки файлов во время отправки $_POST');
Общий алгоритм работы
На странице есть кнопка "Загрузить изображения". Ей даем класс js_fileUpload ('cssSelectorForOpen' => '.js_fileUpload')
По клику отрывается окно для загрузки, в него вставляем файлы - они загружаются и окно закрывается.
После загрузки файлов в js_fileUploadResult (prFileUploadInsertResult(data, '.js_fileUploadResult', 'files')) вставится html который содержит скрытые input с именем files[] (prFileUploadInsertResult(data, '.js_fileUploadResult', 'files')) в значениях ссылка на файл. Если блок обернут в форму, то данные уйдут на сервер при её отправке и в request::multi('files') будет лежать массив cо ссылками на файлы.
Пример обработки запроса
if(request::multi('files')) {
foreach(request::multi('files') as $fileId) {
$file = PrFile::getLink($fileId);
if($file){
$arFiles[] = $file;
}
}
}