Реализация множественной загрузки файлов в bitrix:form
Как в компоненте bitrix:form сделать возможность загружать несколько файлов
В шаблоне компонента template.php:
<input type="file" multiple="" name="files[]">
В /local/php_interface/init.php:
<?php
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('form', 'onBeforeResultAdd', 'formMultiplyFiles');
function formMultiplyFiles($WEB_FORM_ID, &$arFields, &$arrVALUES)
{
global $_FILES;
if ($WEB_FORM_ID == 1) { // ID веб-формы
if ($_FILES['files']) {
$files = [];
if (is_array($_FILES['files']['name'])) {
foreach ($_FILES['files'] as $index => $file) {
foreach ($file as $index2 => $file2) {
$files[$index2][$index] = $file2;
}
}
} else {
$files = [$_FILES['files']];
}
unset($_FILES['files']);
$fieldId = 1; // ID, с которого начинаются поля для файлов в настройках веб-формы, например form_file_1
if (count($files) > 1) {
for ($i = 0; $i < count($files); $i++) {
$_FILES['form_file_' . $fieldId++] = $files[$i];
}
} else {
$_FILES['form_file_' . $fieldId] = $files[0];
}
}
}
}
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий