FileMultiUploadField

Компонент FileMultiUploadField позволяет загружать файлы во временное хранилище. После этого их можно обработать как объекты File в файловой системе сервера или переместить в файловое хранилище.

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

file multi upload field

XML-имя компонента: fileMultiUpload.

Основы

Рассмотрим пример использования компонента.

Объявим компонент в XML-дескрипторе экрана:

<fileMultiUpload id="fileMultiUploadField"
                 caption="Upload"/>
(1)
@Autowired
private FileMultiUploadField fileMultiUploadField;
@Autowired
private TemporaryStorage temporaryStorage;
@Autowired
private Notifications notifications;

@Subscribe
public void onInit(InitEvent event) {
    (2)
    fileMultiUploadField.addQueueUploadCompleteListener(queueUploadCompleteEvent -> { (3)
        for (Map.Entry<UUID, String> entry : fileMultiUploadField.getUploadsMap().entrySet()) { (4)
            UUID fileId = entry.getKey();
            String fileName = entry.getValue();
            FileRef fileRef = temporaryStorage.putFileIntoStorage(fileId, fileName); (5)
        }
        notifications.create()
                .withCaption("Uploaded files: " + fileMultiUploadField.getUploadsMap().values())
                .show();
        fileMultiUploadField.clearUploads(); (6)
    });
    fileMultiUploadField.addFileUploadErrorListener(queueFileUploadErrorEvent ->
            notifications.create()
                    .withCaption("File upload error")
                    .show());
}
1 В контроллере экрана определим сам компонент и интерфейс TemporaryStorage.
2 При инициализации экрана добавим слушателей, которые будут реагировать на события успешной загрузки или ошибки.
3 Компонент загружает выбранные файлы во временное хранилище и вызывает слушатель, добавленный методом addQueueUploadCompleteListener().
4 В данном слушателе вызовом метода FileMultiUploadField.getUploadsMap() можно получить мэп идентификаторов файлов во временном хранилище на имена файлов.
5 Далее загружаемые файлы можно переместить из временного хранилища в постояное FileStorage и получить соответствующие объекты FileRef.
6 После обработки необходимо очистить список файлов вызовом clearUploads().

Слушатели

Компонент FileMultiUploadField имеет следующие слушатели, описанные в разделе компонента FileStorageUploadField:

Атрибуты

Компоненты FileMultiUploadField имеет следующие атрибуты, описанные в разделе компонента FileStorageUploadField:

Методы

  • getUploadsMap() - возвращает Map с id файлов в TemporaryStorage на имена файлов.

  • clearUploads() - очищает список загруженных файлов.