fileStorageUploadField

fileStorageUploadField позволяет пользователям загружать файлы в Jmix хранилище файлов.

XML-элемент

fileStorageUploadField

Java-класс

FileStorageUploadField

Основы

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

fileStorageUploadField может работать как без привязки к атрибуту сущности, так и с привязка данных.

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

<fileStorageUploadField id="fileRefField"
                        acceptedFileTypes=".txt, .csv"
                        fileStoragePutMode="MANUAL"
                        fileNameVisible="true"/>

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

Чтобы хранить файл в атрибуте сущности в виде массива байтов вместо FileRef, используйте компонент fileUploadField.

Для одновременной загрузки нескольких файлов следует использовать компонент upload вместо fileStorageUploadField.

Внутренне fileStorageUploadField использует Vaadin API UploadHandler. По умолчанию загруженный файл сразу сохраняется в FileStorage по умолчанию. Чтобы управлять сохранением файла программно, используйте атрибут fileStoragePutMode.

fileStorageUploadField связанный с данными

fileStorageUploadField позволяет пользователям загружать файл в хранилище файлов и связывать его с атрибутом сущности как объект FileRef.

В примере ниже атрибут picture сущности User имеет тип FileRef.

@Column(name = "PICTURE", length = 1024)
private FileRef picture;
XML
<data>
    <instance id="documentDc" class="io.jmix.uisamples.entity.Document">
    </instance>
</data>
<layout>
    <fileStorageUploadField id="fileStorageUploadField" label="Select File"
                            dataContainer="documentDc" property="content"
                            fileNameVisible="false"
                            dropAllowed="true"
                            maxFileSize="51200"
                            fileStoragePutMode="MANUAL"
    />
</layout>
Java
@ViewComponent
private FileStorageUploadField fileStorageUploadField;

@Autowired
private TemporaryStorage temporaryStorage;
@Autowired
private Notifications notifications;

// This handler is needed only when fileStoragePutMode="MANUAL".
// In AUTO mode the field automatically moves the uploaded file from temporary storage
// to the FileStorage and sets the returned FileRef to the entity attribute.
@Subscribe("fileStorageUploadField")
public void onFileStorageUploadFieldFileUploadSucceeded(
        final FileUploadSucceededEvent<FileStorageUploadField, TemporaryStorage.FileInfo> event) {
    UUID fileId = event.getData().getId();
    File file = temporaryStorage.getFile(fileId);

    if (file != null) {
        FileRef fileRef = new FileRef("tempStorage", file.getAbsolutePath(), file.getName());
        fileStorageUploadField.setValue(fileRef);
        notifications.create("Your file %s has been uploaded successfully.".formatted(event.getFileName()))
                .withThemeVariant(NotificationVariant.LUMO_PRIMARY)
                .show();

        // Remove the uploaded file.
        // In a real-world application you would move the file to FileStorage here using
        // the temporaryStorage.putFileIntoStorage() method.
        temporaryStorage.deleteFile(fileId);
    }
}

fileStorageUploadField имеет ссылку на контейнер, указанный в атрибуте dataContainer; атрибут property содержит имя атрибута сущности, который отображается в fileStorageUploadField.

Атрибуты

fileStorageUploadField имеет следующие уникальные атрибуты:

Имя Описание По умолчанию

acceptedFileTypes

Указывает типы файлов, которые принимает сервер.

clearButtonAriaLabel

Устанавливает атрибут aria-label для кнопки очистки.

clearButtonVisible

Определяет, отображается ли в поле кнопка очистки.

false

connectingStatusText

Устанавливает статус, отображаемый при подключении диалогового окна загрузки.

dropAllowed

Устанавливает, поддерживает ли компонент удаление файлов для загрузки.

fileNameVisible

Атрибут fileNameVisible управляет отображением имени загруженного файла рядом с кнопкой загрузки.

fileNotSelectedText

Устанавливает текст, отображаемый, когда файл не выбран.

fileStorageName

Устанавливает имя FileStorage, в которое будет помещен загружаемый файл.

fileStoragePutMode

Устанавливает режим, определяющий, когда файл будет помещен в FileStorage.

fileTooBigText

Устанавливает сообщение, отображаемое, когда файл превышает максимальный размер.

incorrectFileTypeText

Устанавливает сообщение, отображаемое, когда тип файла не принимается.

maxFileSize

Указывает максимальный размер файла в байтах, разрешенный для загрузки.

processingStatusText

Устанавливает статус, отображаемый во время обработки загруженного файла.

remainingTimeText

Устанавливает текст, используемый для отображения оставшегося времени загрузки.

remainingTimeUnknownText

Устанавливает текст, отображаемый, когда оставшееся время загрузки невозможно вычислить.

uploadDialogCancelText

Устанавливает текст кнопки отмены диалога загрузки.

uploadDialogTitle

Устанавливает заголовок диалога загрузки.

uploadIcon

Устанавливает значок для кнопки загрузки.

uploadText

Устанавливает текст, отображаемый на кнопке загрузки.

fileStorageUploadField имеет следующие общие атрибуты:

Обработчики

fileStorageUploadField имеет следующие уникальные обработчики:

Имя Описание

FileUploadFailedEvent

io.jmix.flowui.kit.component.upload.event.FileUploadFailedEvent запускается, когда FailedEvent запускается базовым компонентом Upload.

FileUploadFileRejectedEvent

io.jmix.flowui.kit.component.upload.event.FileUploadFileRejectedEvent запускается, когда базовый компонент Vaadin Upload запускает FileRejectedEvent.

FileUploadFinishedEvent

io.jmix.flowui.kit.component.upload.event.FileUploadFinishedEvent срабатывает, когда базовый компонент Vaadin Upload запускает FinishedEvent.

FileUploadProgressEvent

io.jmix.flowui.kit.component.upload.event.FileUploadProgressEvent запускается, когда базовый компонент Vaadin Upload выдает ProgressUpdateEvent.

FileUploadStartedEvent

io.jmix.flowui.kit.component.upload.event.FileUploadStartedEvent запускается, когда базовый компонент Vaadin Upload выдает StartedEvent.

FileUploadSucceededEvent

io.jmix.flowui.kit.component.upload.event.FileUploadSucceededEvent запускается, когда базовый компонент Vaadin Upload запускает SucceededEvent.

validator

Проверяет значение компонента.

fileStorageUploadField имеет следующие общие обработчики:

Элементы

Компонент fileStorageUploadField может содержать следующие вложенные элементы: tooltip и uploadIcon.