fileUploadField
fileUploadField позволяет пользователям выбирать файл со своего локального компьютера и загружать его в приложение Jmix.
- 
XML-элемент: fileUploadField
- 
Java-класс: FileUploadField
Основы
Компонент может содержать надпись, ссылку на загруженный файл и кнопку загрузки. При нажатии на кнопку загрузки появляется стандартное диалоговое окно выбора файла, позволяющее пользователю выбрать файл.
 
fileUploadField может работать как без привязки к атрибуту сущности, так и с привязкой данных.
Ниже мы покажем пример использования компонента без привязки данных. Вы можете использовать его для непосредственной обработки загруженного файла, не связывая его ни с какой сущностью Jmix. Это отлично подходит для ситуаций, когда вы хотите обработать файл, сохранить его в другом месте или выполнить другую операцию, не сохраняя его постоянно в базе данных.
<fileUploadField id="fileUploadField"
                 clearButtonVisible="true"
                 fileNameVisible="true"
                 dropAllowed="true"
                 acceptedFileTypes=".pdf, .jpeg, .jpg, .png, .doc, .docx"
                 maxFileSize="921600"
                 label="msg://fileUploadField.label"
                 helperText="msg://fileUploadField.helperText"
                 fileTooBigText="msg://fileUploadField.fileTooBigText"/>Теперь вы можете обрабатывать загруженный файл непосредственно в обработчике события FileUploadSucceededEvent:
@Subscribe("fileUploadField")
public void onFileUploadFieldFileUploadSucceeded(
        final FileUploadSucceededEvent<FileUploadField> event) {
    // Access the uploaded file information:
    String fileName = event.getFileName();
    byte[] fileContent = event.getSource().getValue();
    // Perform your logic to handle the fileContent:
    assert fileContent != null;
    log.info("File content: " + new String(fileContent, StandardCharsets.UTF_8));
}| По умолчанию fileUploadFieldиспользуетMemoryBufferв качествеReceiver. Это означает, что загруженный файл хранится в памяти в виде массива байтов. При использованииMemoryBufferфизический файл в файловой системе не создается. Это отлично подходит для небольших файлов, которые не требуют постоянного хранения. | 
| Для загрузки и сохранения больших файлов рекомендуется использовать компонент fileStorageUploadField. Для одновременной загрузки нескольких файлов следует использовать компонент upload вместо  | 
Привязка данных
fileUploadField позволяет пользователям сохранять загруженный файл в атрибуте сущности в виде массива байтов.
В примере ниже атрибут document сущности User имеет тип массива байтов.
@Column(name = "DOCUMENT")
private byte[] document;<data>
    <instance class="com.company.onboarding.entity.User" id="userDc">
        <fetchPlan extends="_base"/>
        <loader id="userDl"/>
    </instance>
</data>
<layout>
    <fileUploadField dataContainer="userDc"
                     property="document"
                     clearButtonVisible="true"
                     fileNameVisible="true"/>
</layout>fileUploadField имеет ссылку на контейнер, указанный в атрибуте dataContainer; атрибут property содержит имя атрибута сущности, который отображается в fileUploadField.
Чтобы сохранить файл в файловом хранилище и связать его с сущностью как FileRef, используйте компонент fileStorageUploadField.
Атрибуты
id - acceptedFileTypes - alignSelf - classNames - clearButtonAriaLabel - clearButtonVisible - colspan - connectingStatusText - css - dataContainer - dropAllowed - enabled - errorMessage - fileName - fileNameVisible - fileNotSelectedText - fileTooBigText - height - helperText - incorrectFileTypeText - label - maxFileSize - maxHeight - maxWidth - minHeight - minWidth - processingStatusText - property - readOnly - remainingTimeText - remainingTimeUnknownText - required - requiredMessage - uploadDialogCancelText - uploadDialogTitle - uploadIcon - uploadText - visible - width
fileName
Устанавливает текст, который должен отображаться, если значение установлено из контейнера данных. Когда пользователь загружает файл, поле показывает имя файла. Однако, когда значение сохраняется в базу данных, поле теряет информацию об имени файла. Атрибут fileName предназначен для установки пользовательского текста, когда нет информации об имени файла. Если он не определен, будет показано значение по умолчанию:
 
Обработчики
AttachEvent - ComponentValueChangeEvent - DetachEvent - FileUploadFailedEvent - FileUploadFileRejectedEvent - FileUploadFinishedEvent - FileUploadProgressEvent - FileUploadStartedEvent - FileUploadSucceededEvent - statusChangeHandler - validator
| Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню Code → Generate (Alt+Insert / Cmd+N). | 
FileUploadSucceededEvent
io.jmix.flowui.kit.component.upload.event.FileUploadSucceededEvent возникает, когда происходит SucceededEvent компонента Upload.
Смотрите пример использования выше выше в разделе Основы.