upload

Компонент upload позволяет пользователям загружать один или несколько файлов. Он отображает прогресс загрузки и статус каждого файла. Файлы можно загрузить, нажав кнопку Upload files или перетащив их в компонент.

XML-элемент

upload

Java-класс

JmixUpload

Атрибуты

id - acceptedFileTypes - alignSelf - autoUpload - classNames - colspan - css - dropAllowed - dropLabel - dropLabelIcon - height - maxFileSize - maxFiles - maxHeight - maxWidth - minHeight - minWidth - receiverFqn - receiverType - uploadIcon - uploadText - visible - width

Обработчики

AllFinishedEvent - AttachEvent - DetachEvent - FailedEvent - FileRejectedEvent - FinishedEvent - ProgressUpdateEvent - StartedEvent - SucceededEvent - receiver

Основы

Пример использования компонента upload:

<upload id="upload"
        maxFiles="2"
        autoUpload="false"/>
upload basics

Автозагрузка

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

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

  • Если значение false, файлы не загружаются автоматически. Пользователю необходимо нажать кнопку Upload, чтобы запустить процесс загрузки.

Значение по умолчанию - true.

Drag & Drop

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

Функциональность drag & drop включена по умолчанию. Чтобы отключить ее, установите атрибут dropAllowed в значение false.

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

Значение атрибута может быть либо самим текстом, либо ключом в пакете сообщений. В случае ключа, значение должно начинаться с префикса msg://.

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

<upload dropLabel="Drop files here to upload"
        dropLabelIcon="vaadin:cloud-upload-o"/>
upload drag drop

Лимит файлов

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

Этот атрибут задает максимальное количество файлов для загрузки. Если значение установлено в единицу, то стандартный файловый браузер не позволит выбрать несколько файлов.

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

@Autowired
private Notifications notifications;

@Subscribe("upload")
public void onUploadFileRejected(final FileRejectedEvent event) {
    notifications.create(event.getErrorMessage())
            .show();
}

Обработчики файлов

Атрибут receiverFqn задает полное имя Java-класса, который будет обрабатывать загруженные файлы. Этот класс должен реализовывать интерфейс Receiver.

Если обработчик не реализует интерфейс MultiFileReceiver, то загрузка будет автоматически настроена на прием только одного файла.

Атрибут receiverType определяет тип обработчика, используемого для обработки загруженных файлов. Он определяет, как загруженные файлы будут обрабатываться и храниться. Доступные значения:

  • MemoryBuffer

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

  • MultiFileMemoryBuffer

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

  • FileTemporaryStorageBuffer

    Обрабатывает загрузку одного файла за раз. Сохраняет файл во временное хранилище. Использование FileTemporaryStorageBuffer автоматически настраивает компонент так, чтобы можно было выбрать только один файл.

  • MultiFileTemporaryStorageBuffer

    Обрабатывает загрузку нескольких файлов одновременно. Для каждого файла он сохраняет его во временное хранилище.

Тип обработчика по умолчанию - MemoryBuffer.

Атрибуты

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

Ниже приведены атрибуты, специфичные для upload:

Название

Описание

Значение по умолчанию

autoUpload

Устанавливает, разрешает ли компонент начать загрузку сразу после выбора файлов. Смотрите Автозагрузка.

true

dropLabel

Задает текст подсказки, которая отображается пользователю, чтобы он мог сбросить файлы в компонент upload. Смотрите Drag & Drop.

dropLabelIcon

Устанавливает иконку для подсказки. Смотрите Drag & Drop.

maxFiles

Задает максимальное количество файлов для загрузки. Смотрите Лимит файлов.

unlimited

receiverFqn

Устанавливает реализацию обработчика, которая должна использоваться для этого компонента upload. Смотрите Обработчики файлов.

receiverType

Задает тип реализации Receiver. Смотрите Обработчики файлов.

MemoryBuffer

Обработчики

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

Ниже приведены обработчики, специфичные для upload.

Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню CodeGenerate (Alt+Insert / Cmd+N).

Название

Описание

AllFinishedEvent

Событие com.vaadin.flow.component.upload.AllFinishedEvent отправляется, когда upload обработал все файлы в очереди загрузки, независимо от того, были ли все операции приема успешными или нет.

FailedEvent

Событие com.vaadin.flow.component.upload.FailedEvent отправляется, когда загрузка принята, но прием был прерван по какой-либо причине.

FileRejectedEvent

Событие com.vaadin.flow.component.upload.FileRejectedEvent отправляется, когда выбранный для загрузки файл не соответствует ограничениям, заданным для загрузки, например, ограничение размера файла или ограничение количества файлов. Смотрите Лимит файлов.

FinishedEvent

Событие com.vaadin.flow.component.upload.FinishedEvent отправляется, когда upload получает файл, независимо от того, была ли операция приема успешной или завершилась с ошибкой. Если вы хотите различать эти два случая, используйте SucceededEvent или FailedEvent, которые являются подклассами FinishedEvent.

ProgressUpdateEvent

Событие com.vaadin.flow.component.upload.ProgressUpdateEvent отправляется для отслеживания прогресса загрузки.

StartedEvent

Событие com.vaadin.flow.component.upload.StartedEvent отправляется, когда загрузка запускается для приема.

SucceededEvent

Событие com.vaadin.flow.component.upload.SucceededEvent отправляется, когда загрузка успешно завершена. Наш демонстрационный проект Samples содержит пример использования MultiFileMemoryBuffer для управления несколькими файлами в com.vaadin.flow.component.upload.SucceededEvent.

receiver

Устанавливает реализацию обработчика, которая должна использоваться для этого компонента upload. Смотрите атрибуты receiverFqn и receiverType.

Смотрите также

Смотрите документацию Vaadin для получения дополнительной информации.