Документация для разработчиков
Темная тема

show

Возвращает HTML и JavaScript для вывода контрола выбора и загрузки файлов. Метод подключает JS-расширение fileinput, подготавливает данные о текущих файлах и создает JS-экземпляр BX.UI.FileInput.

Синтаксис

public function show($values = array(), $getDataFromRequest = false)

Параметры

Параметр Тип По умолчанию Описание
$values array|int|string [] Текущие значения файлов. Можно передать идентификатор файла, массив с данными файла, путь к временному файлу или массив значений для нескольких полей.
$getDataFromRequest bool false Если передано true, дополнительные свойства файла берутся из текущего запроса.

Возвращаемое значение

Возвращает строку с HTML-разметкой и JavaScript-кодом контрола.

Описание

Метод анализирует переданные значения файлов и формирует элементы для уже сохраненных файлов, временных файлов или файлов, выбранных в текущем запросе. Для изображений дополнительно подготавливаются ссылки на просмотр и превью.

Если после AJAX-загрузки файл сохраняется через CFile::SaveFile, проверьте значение tmp_name. Оно может указывать на файл во временной директории в относительном виде. Перед сохранением значение должно соответствовать существующему физическому пути к файлу. Не используйте жестко заданный путь /upload/tmp: временная директория определяется настройками продукта.

Если в имени поля используется маркер #IND#, метод определяет максимальный индекс из переданных значений и передает его в JS-контрол, чтобы новые элементы продолжили нумерацию.

Пример вывода контрола

<?php
echo \Bitrix\Main\UI\FileInput::createInstance([
    'id' => 'webform_photos',
    'name' => 'FILE[n#IND#]',
    'description' => false,
    'upload' => true,
    'allowUpload' => \Bitrix\Main\UI\FileInput::UPLOAD_EXTENTION_LIST,
    'allowUploadExt' => 'jpg,jpeg,png',
    'delete' => true,
    'edit' => false,
    'maxCount' => 0,
    'maxSize' => 1024 * 1024 * 10,
])->show($files, false);
?>

Очистка выбранных файлов в JavaScript

После вызова show на странице создается объект BX.UI.FileInput. Его можно получить по JS-идентификатору контрола и удалить все выбранные файлы методом deleteFiles.

<script>
BX.ready(function() {
	var button = BX('cancel_button');

	if (button)
	{
		BX.bind(button, 'click', function() {
			var fileInput = BX.UI.FileInput.getInstance('bx_file_webform_photos');

			if (fileInput)
			{
				fileInput.deleteFiles();
			}
		});
	}
});
</script>

В примере bx_file_webform_photos сформирован из параметра id => 'webform_photos'. Если параметр id не задан, идентификатор строится из имени поля, поэтому для программного управления контролом рекомендуется всегда передавать явный id.

Важно. Метод deleteFiles очищает контрол на странице и добавляет служебные поля удаления для уже привязанных файлов. Физическое удаление сохраненных файлов выполняется при серверной обработке отправленной формы. Если пользователь нажал кнопку отмены и форма не отправляется, для удаления уже сохраненных файлов нужен отдельный серверный обработчик.

См. также

Была ли эта страница полезна?

Пользовательские комментарии

Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2026, «1С-Битрикс», 2026
Наверх