Goal
This how-to describes how to use the multiple file upload.
Note that IE 9 is not able to handle multiple files, only single files. This is doing fine in IE 10+, Firefox and Chrome.
For this functionality you do not need to install any plugin.
Configurations
Please configure the connection in aquima.properties file in the home folder first. Currently there are two flavors:
Memory
connection.connection1.memory
File system
connection.connection1.filesystem.path=<your path>
Replace <your path> with the correct path. Note to use '/' in your path, e.g. C:/Files/.
Also check that your language properties file (e.g. messages_en-GB) contains the following lines:
#fileupload fileupload.label.single=Add file... fileupload.label.multi=Add files... fileupload.description.filesize=Maximum file size is: {0} fileupload.description.extension=Allowed file extensions are: {0} fileupload.validation.extension=File type not allowed fileupload.validation.filesize=File is too large fileupload.status.succes=File(s) uploaded successfully fileupload.status.failed=Upload failed because the following file(s) do not meet all conditions:
Multiple File Upload
To build this functionality the following steps have to be taken.
Define a connection name (or as in the example project two connections) and distinguish whether it should be in memory or on a file system. In this cookbook 'connection1' and 'connection2' will be used: connection1 uploads to the memory, connection2 to the file system. The aquima.properties file has to be extended by the following entries:
connection.connection1.memory connection.connection2.filesystem.path=C:/UploadedFiles/
- Create an entity 'File' in your model.
- Create at least one attribute: File.Id. For convenience add also File.Name, File.Type and File.Size.
- Create an event called 'UploadAction'.
- Create an exposed flow.
- Create a page which is put in the flow and is connected.
Create a container of type AQ_File_Upload (and put it at the page) with the following parameters:
Parameter Value Comments Connection connection1 Persistence Temporary Mode Multiple files FileInstance File The name of the entity defined in step 2. FileID File.Id FileName File.Name FileType File.Type FileSize File.Size - Click the tab 'Events' and select the event 'UploadedAction' at the 'FileUploaded' parameter.
- Create a container of type AQ_InstanceSelectorPlus.
- Let the containment be:
- File.Id, File.Name, File.Type, File.Size, all of them read-only
- A button 'Delete' (with a corresponding event, connect it in the flow with the AQ_File_Delete service)
- A download container (see 'Download File')
- Let the parameters be:
Parameter 'entity' should be 'File'.
- Let the containment be:
- Let the instance selector container be the second container on the page.
Download File
To get the download file container work, first create a text item with the name 'DownloadText' and enter some text, e.g. Download.
Create a AQ_File_Download container and add the following parameters:
Parameter | Value |
---|---|
Connection | connection1 |
FileId | File.Id |
ButtonText | DownloadText |
Delete File
Create a new service of type 'AQ_File_Delete'. Enter the following parameters:
Parameter | Value |
---|---|
Connection | connection1 |
FileId | File.Id |
Runtime
<screenshot>
Flowing after an upload
..