Перейти к основному содержимому

FileUploader

Отображает диалоговое окно для загрузки файлов

Используется для загрузки файлов в файловый сервис Платформы. Согласно дизайн-системе Платформы имеет несколько вариантов отображения и режимов работы.

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

 <FileUploader
Value-var="data.files"
Text-Localizable="TechSupport.SupportSelectFile"
OnFilesChange={() => getCommand('GetUploadLink')}
OnFileCreate={(letterId = data.id) => getCommand('SaveFile', { letterId })}
OnFileDelete={() => getCommand('DeleteFile')}
OnClick={() => getCommand('GetDownloadLink')}
OutputValue-var="data.files"
OutputState-var="data.__fileUploaderBusy__"
KeyMap={{ Name: 'fileName', Id: 'fileId' }}
Multiple={true}
/>

Свойства

ИмяОписаниеТипЗначение по умолчаниюВозможные значения
AdditionalUploadInfoДополнительная информация о загрузкеstring
AllowedFileTypesРазрешенные расширения и/или MIME-типы файлов для загрузки в виде массиваarray
AutofocusПризнак установки фокуса на компонентbooleanFalse
BadgeКоличественная информация в компонентах Menu, Accordion, Link, Text. В качестве значения может использоваться объект с полями: counter (число),
position ("post" или "pre"), color (цвет)
any
CSSМассив строк-классов CSS-стилей компонентаarray
ChooseFileTextТекст на кнопкеstringВыберите файл
CombineConfigКонфигурация всех событий компонента. Служебное свойство для генерации фрагментов кода в визуальном режиме редактора форм.
Не рекомендуется указывать значение вручную
object
DataHintПодсказка к компонентуstring
DeleteTooltipLabelТекст подсказки для кнопки "Удалить"stringУдалить
DisabledПризнак запрета на редактирование компонентаbooleanFalse
DownloadModeПоведение компонента: скачивать или открывать файл по щелчку на нем в списке файловenumDownloadDownload - Скачивание файла по щелчку на нем в списке файлов
Open - Открытие файла по щелчку на нем в списке файлов
ErrorТескт ошибки при валидации компонента или undefined/false, если при валидации не обнаружены ошибкиbooleanFalse
ErrorMessageСообщение об ошибке при валидации компонента. Устаревшее свойство, используется только для совместимости с версиями Платформы до 3.0. Вместо ErrorMessage рекомендуется использовать свойство Errorstring
FocusedПризнак фокусировки на компонентеbooleanFalse
GetUrlCommandКоманда получения URL-адреса для загрузки файлаobject
HiddenПризнак состояния компонента СкрытbooleanFalse
HighlightErrorПризнак подсвечивания ошибкиbooleanTrue
HintПодсказка над компонентомstring
HintPositionСторона — правая или левая — для отображения подсказкиenumrightleft - Слева
right - Справа
top - Сверху
bottom - Снизу
topRight - Сверху справа
topLeft - Сверху слева
bottomRight - Снизу справа
bottomLeft - Снизу слева
IdИдентификатор компонента для навигации к нему на HTML-страницеstring
KeyMapИмя переменной, которая доступна элементу списка файловobject<pre>{
"VariableName": ""
}</pre>
LabelНадпись на компонентеstring
MaxFileSizeМаксимальный размер файла (Мб)number10000
MaxLengthМаксимальная длина вводимой строкиnumber30
ModeРежим работы компонента: загрузка файлов по URL-адресу, полученному функцией GetUrlCommand, или передача файлов переменной event в обработчик события OnFilesChangeenumDefaultDirect - Режим загрузки, при котором файлы передаются переменной event в обработчик события OnFilesChange этого компонента
Default - Режим загрузки файлов по URL-адресу, полученному функцией GetUrlCommand
ModelПсевдоним свойств Value и OutputValueany
MultipleВозможность выбора нескольких файловbooleanFalse
NoWriteOnInitПризнак отказа от записи данных в переменную, заданную в свойствах OutputValue или Model, при создании компонентаbooleanFalse
OnBeforeUploadОбработчик события, предшествующего отправке файлов на сервер; в качестве параметра принимает массив загружаемых файлов и должен вернуть массив файлов для отправкиany
OnBlurПараметры команды, отправляемой при потере фокуса компонентомundefined
OnChangeПараметры команды, отправляемой при изменении компонента, например, при вводе текста, выборе из спискаundefined
OnClickОбработчик события по щелчку на файле в спискеobject
OnDelayПараметры команды, отправляемой по истечении секунды (для предотвращения ложного срабатывания обработчика события) после последнего изменения модели данныхundefined
OnDropLabelТекст, отображаемый при размещении файла в области загрузкиstringОтпустите для начала загрузки...
OnEnterKeyDownПараметры команды, отправляемой по нажатию Enterundefined
OnFileCreateОбработчик события о добавлении нового файла в списокobject
OnFileDeleteОбработчик события об удалении файла из спискаobject
OnFilesChangeОбработчик события об изменении списка файловobjectOnFilesChange
OnFilesDeleteОбработчик события об удалении файлаobject
OnKeyDownОбработчик события KeyDownundefined
OnKeyUpОбработчик события KeyUpundefined
OnMouseDownОбработчик события MouseDownundefined
OnMouseEnterОбработчик события MouseEnterundefined
OnMouseLeaveОбработчик события MouseLeaveundefined
OnMouseMoveОбработчик события MouseMoveundefined
OnMouseOutОбработчик события MouseOutundefined
OnMouseOverОбработчик события MouseOverundefined
OnMouseUpОбработчик события MouseUpundefined
OnUnmountОбработчик события Unmountundefined
OutputStateИмя переменной для сохранения состояния компонентаany
OutputValueПривязка отрисованного компонента к моделиany
OverlayTextСопровождающий текст-подсказка контрола в режиме Transparent.string
ReadOnlyПризнак запрета на редактирование компонента c возможностью копирования содержимогоbooleanFalse
RequiredПризнак обязательности заполнения. Не влияет на валидацию, отображает звездочку справа от надписиbooleanFalse
RestartTooltipLabelТекст подсказки для кнопки "Повторить"stringПовторить
SingleButtonРежим работы компонента, при котором отображается единственная кнопка; по нажатию кнопки пользователь может выбрать файл(ы) из файлового хранилища своего устройстваbooleanFalse
SlotМетка для динамического добавления другого компонента по его идентификаторуstring
StopTooltipLabelТекст подсказки для кнопки "Остановить"stringОстановить
TextТекст на кнопке выбора файлаstringSelect file
TooltipВсплывающая подсказка над компонентом, чаще используемая для пояснения назначения значкаany
TraceId
Идентификатор для отслеживания состояния компонента исходя из хронологической последовательности:
создание, отрисовка, обновление, удаление; используется для выполнения фрагмента кода по изменению состояния компонента
string
TransparentПрозрачный режим работы компонента, при котором дочерние компоненты становятся областью для перетаскивания файловbooleanFalse
UploadFolderИмя существующей папки для загрузки; имя папки должно содержать только строчные буквы и не содержать пробелыstringuploadfiles
ValidationПризнак ошибки валидации компонента. Устаревшее свойство, используется только для совместимости с версиями Платформы до 3.0. Вместо Validation рекомендуется использовать свойство ErrorbooleanFalse
ValueПривязка модели к отрисованному компонентуany
VisibleПризнак инверсии состояния компонента СкрытbooleanTrue
WithDropzoneРежим отображения компонента с областью для перетаскивания файла или без области c отображением только кнопки для открытия диалога выбора файлаbooleanFalse
WithPreviewПризнак режима отображения списка загруженных файловbooleanTrue
WriteModeИмя события, по которому меняется значение переменной состояния (экранной формы), переданной в качестве OutputValueenum- Режим ввода без контроля состояния компонента

Примеры

Скрипты:


const COLUMNS = [
{ title: 'Filename', dataType: 'string', alias: 'name' },
{ title: 'Token', dataType: 'date', alias: 'token' },
{ title: 'Guid', dataType: 'number', alias: 'guid' },
{ title: 'Size', dataType: 'number', alias: 'size' },
];
const paginationSettings = { skip: 0, take: 10 };
setState({
COLUMNS,
data: getValue('file22'),
paginationSettings,
})

JSX:

<Group Mode="Wrap" CSS={['pl-16']}>
<Group Height="50" Mode="Wrap">
<Text Mode="Medium_32" Value="FileUploader 1.0" />
<Group>
<Text Color="GRAY_5" Mode="Regular_14" Value="Используются для загрузки и скачивания файлов." />
</Group>
</Group>

<Group Mode="Row" Height="auto" CSS={['five']}>
<Group Mode="Wrap">
<Group><Text Color="GRAY_5" CSS={['pb-16']} Mode="Regular_12" Value="Кнопка для выбора файлов из файлового хранилища устройства" /></Group>
<FileUploader
Text="Шаблон настроек"
GetUrlCommand={() => getCommand('UiKitFileUploaderGenerateUrlForUploadFile')}
DownloadMode="Download"
Multiple={true}
Value-var="file33"
OutputValue-var="file33"
OutputState-var="____fileUploaderBusy____"
ChooseFileText='Выберите файл'
WithDropzone={false}
Required={true}
SingleButton={true}
CSS={['uploaderSingleButtonMode']}
/>
<Loader Visible-var="____fileUploaderBusy____" />
<Text Visible={(file33) => file33 && file33.length} Color="GRAY_5" CSS={['pb-16']} Mode="Regular_12" Value="Демонстрация списка загруженных файлов" />
<Repeater Visible={(file33) => file33 && file33.length} Value-var="file33" Mode="ol">
<RepeaterItem Alias="item">
<Group>
<Group Width="70%">
<Text Value-var="item.name"/>
</Group>
<Group >
<Text Value={(size = item.size) => Math.round(size/1024)+' Кб'}/>
</Group>
</Group>
</RepeaterItem>
</Repeater>
</Group>
<Group Mode="Column">

</Group>
</Group>
<Group Mode="Row" Height="auto">
<Group Mode="Wrap">
<Group><Text Color="GRAY_5" CSS={['pb-16']} Mode="Regular_12" Value="Большая зона сброса файлов" /></Group>
<FileUploader
Text="Шаблон настроек"
GetUrlCommand={() => getCommand('UiKitFileUploaderGenerateUrlForUploadFile')}
DownloadMode="Download"
Multiple={true}
Value-var="file22"
OutputValue-var="file22"
OutputState-var="___fileUploaderBusy___"
ChooseFileText='Выберите файл'
WithDropzone={false}
Required={true}
Transparent={true}
OverlayText={() => getLocalization("Platform.FileUploaderOverlay")}
CSS={['uploaderTransparentMode']}
>
<Group>
<Loader Visible-var="___fileUploaderBusy___" />
<DataGrid
KeyField="Id"
Columns-var="COLUMNS"
Value-var="file22"
/>
</Group>
</FileUploader>
</Group>
</Group>
<Group Height="auto">
<Group Mode="Column">
<Group Mode="Wrap">
<Group><Text Color="GRAY_5" CSS={['pb-16']} Mode="Regular_12" Value="Открытие файла по щелчку на нем в списке файлов" /></Group>
<FileUploader
Text="Шаблон файла "
GetUrlCommand={() => getCommand('UiKitFileUploaderGenerateUrlForUploadFile')}
DownloadMode="Open"
Multiple={true}
Value-var="file"
OutputValue-var="file"
OutputState-var="__fileUploaderBusy__"
ChooseFileText='Выберите файл'
WithDropzone={false}
CSS={['uploaderOpenOnClickMode']}
/>
<Link
Mode="DownloadById"
Visible={(fileId = file[0].token) => fileId}
DownloadKind="Minio"
DownloadId={(fileId = file[0].token) => fileId}
Text="Скачать файл"
/>
</Group>
</Group>
<Group Mode="Column">
<Group Mode="Wrap">
<Group><Text Color="GRAY_5" CSS={['pb-16']} Mode="Regular_12" Value="Скачивание файла по щелчку на нем в списке файлов" /></Group>
<FileUploader
Text="Шаблон настроек"
GetUrlCommand={() => getCommand('UiKitFileUploaderGenerateUrlForUploadFile')}
DownloadMode="Download"
Multiple={false}
Value-var="file2"
OutputValue-var="file2"
OutputState-var="__fileUploaderBusy__"
ChooseFileText='Выберите файл'
WithDropzone={false}
Required={true}
CSS={['uploaderDownloadOnClickMode']}
/>
</Group>
</Group>
</Group>
<Group Height="auto">
<Group Mode="Wrap">
<Group><Text Color="GRAY_5" CSS={['pb-16']} Mode="Regular_12" Value="Универсальный вариант выбора файлов" /></Group>
<FileUploader
AllowedFileTypes={["text/html", ".txt"]}
Text="Перетащите или"
ChooseFileText="выберите файл"
GetUrlCommand={() => getCommand('UiKitFileUploaderGenerateUrlForUploadFile')}
DownloadMode="Download"
Multiple={true}
Value-var="file1"
OutputValue-var="file1"
OutputState-var="__fileUploaderBusy__"
WithDropzone={true}
OnDropLabel="Отпустите для начала загрузки..."
MaxFileSize={10000}
AdditionalUploadInfo={'Максимальный размер файла 10000 Мб'}
OnBeforeUpload={() => {
const files = getEvent();
return files.map(file => {
const name = 'myPrefix-' + file.name;
const newFile = new File([file], name, { type: file.type, lastModified: file.lastModified })
newFile.extension = name.substring(name.lastIndexOf('.')) || file.extension;
newFile.guid = file.guid;
return newFile;
});
}}
CSS={['uploaderWithDropzoneMode']}
/>
</Group>
</Group>
</Group>