Unable to view filename in fileMultiUploadField

Hi,

Files which when upload by fileMultiUploadField tag are not visible on screen but files when uploaded via fileStorageUpload uploaded file name is visible by adding showFileName attribute.

Kindly help to understand how can view name of multiple files uploaded by fileMultiUploadField.

Hello!

FileMultiUploadField is not a common field and it cannot show uploaded file names. To show file names you should create custom layout (e.g. HBoxLayout with labels or Table with DTO entity or KeyValueEntity).

For instance, uploaded files are shown in the Table:

Descriptor

<data>
    <keyValueCollection id="fileNamesDc">
        <properties>
            <property name="name" datatype="string"/>
        </properties>
    </keyValueCollection>
</data>
<layout expand="filesTable" spacing="true">
    <fileMultiUpload id="fileMultiUpload"/>
    <table id="filesTable"
           dataContainer="fileNamesDc"
           width="100%">
        <columns>
            <column id="name"/>
        </columns>
    </table>
</layout>

Controller:

@Autowired
private KeyValueCollectionContainer fileNamesDc;
@Autowired
private DataManager dataManager;

@Subscribe("fileMultiUpload")
public void onFileMultiUploadQueueUploadComplete(FileMultiUploadField.QueueUploadCompleteEvent event) {
    Map<UUID, String> uploadsMap = event.getSource().getUploadsMap();
    List<KeyValueEntity> fileNames = new ArrayList<>(uploadsMap.size());

    for (Map.Entry<UUID, String> entry : uploadsMap.entrySet()) {
        KeyValueEntity fileName = dataManager.create(KeyValueEntity.class);
        fileName.setValue("name", entry.getValue());
        fileNames.add(fileName);
    }
    fileNamesDc.getMutableItems().addAll(fileNames);
}
1 Like