Массовая загрузка файлов

search

Параметры

Параметр Тип Описание
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;
		}
	}
}
		
	
© 2015 - 2018