\Bitrix\Main\UI\FileInput довольно просто работать в любом месте сайта, достаточно получить данные файлов и с ними можно уже работать как угодно, отправляю форму на обработку или допустим вы в админке где то хотите вставить этот модуль и нет возможности отправить всю форму, тогда можно отследить события изменения и уже дальше эти данные слать куда вам надо.
При простой подзагрузке файлов они сохраняются во временную директорию Битрикс обычно это
\home\bitrix\.bx_temp\******sitemanager, а вам нужно уже далее это всё послать в форме или аяксом из полей.
Простыми словами:
1. вариант вы вставляете компонент в форму и шлёте форму как обычно на обработку со всеми полями.
2. вариант вы берёте данные из полей шлёте яксом на сохранение и уже дальше работаете с id файлами как обычно.
// загружены файлы
BX.addCustomEvent('onAjaxSuccess', (e) => {
// слать данные без формы можно прямо так
$.ajax({
type: 'POST',
url : '/handler.php',
data: { pics : e.files },
success: function(data)
{ console.log(data) }
})
})
// изменения
BX.addCustomEvent('onFileinputIsChanged', (e) => {})
// удаление
BX.addCustomEvent('onFileIsDeleted', (e) => {})
в обработчике есть один нюанс по поводу путей к файлам
// 1. собираете массив файлов
$i = 0;
foreach( $_POST['pics'] as $itm){
$arFile[$i]['hash'] = $itm['file']['hash'];
$arFile[$i]['name'] = $itm['file']['files']['default']['name'];
$arFile[$i]['type'] = $itm['file']['files']['default']['type'];
$arFile[$i]['tmp_name'] = $itm['file']['files']['default']['path'];
$arFile[$i]['size'] = $itm['file']['files']['default']['size'];
$arFile[$i]['error'] = '';
$i++;
}
// 2. нужно обязательно прогнать через CIBlock::makeFileArray( ); тогда будут верные пути и сможете сохранять файлы CFile::SaveFile(); иначе будет ошибка