
Overview
Unlike the File Upload Button, which handles one file at a time via a button click, the Multiple File Upload component offers:Batch uploads
Upload multiple files in a single request with individual validation per file
Drag and drop
Drag-and-drop zone with click-to-browse fallback
File management
Preview selected files with name, size, and a remove option before uploading
UI Flow upload flow
When the component is bound to a UI Flow upload action:- The SDK uploads the selected files to the temp-file store via
POST /document/internal/wks/{workspaceId}/temp-files/upload-multiple(multipart, document-plugin). - The SDK calls
POST /api/runtime/wks/{workspaceId}/appId/{appId}/ui-flow/{uiFlowSessionId}/upload-multiple(process-engine) with the list of returned temp-file IDs. The 200 response returns a server-generateduploadBatchId. - process-engine sends a single bulk command to document-plugin; document-plugin persists each file in the session.
- The SDK receives one SSE frame (
eventType=UI_FLOW_FILE_UPLOAD_MULTIPLE,namespace=uploadBatchId) carrying the per-file results. - The per-file results are written to the action’s
responseKeyas a list under the UI Flow session variables.
UiFlowUploadResponse) is a subset of the process-based upload response — it omits customId, fileId, documentType, documentLabel, and status, which are not meaningful for session-scoped uploads.
Component properties
The following properties are available in the Multiple File Upload configuration panel:Display
Validation
Feedback
Visibility
UI action configuration
The Multiple File Upload component only supports the Upload action type. When configuring the UI action for this component, set:- Event type:
CLICK - Action type:
Upload
{actionName}TempFileIds (a list of UUIDs) in the process instance params before triggering the action.
Starting with 5.5.0, the existing File Upload Button is also adjusted so that Upload is its only selectable action type (matching this component). It continues to work with the single-file path (
{actionName}TempFileId). Both components can coexist in the same process.How it works
1
User selects files
The user drags files into the drop zone or clicks Browse Files to select them. Each file is validated against the configured accepted types, max files count, and max file size.
2
Files uploaded to temporary storage
When the user clicks Upload Files, the SDK sends all selected files in a single
multipart/form-data request to the document plugin’s bulk temp upload endpoint. The response returns a list of temporary file IDs.3
Process action triggered
The SDK populates
{actionName}TempFileIds with the list of temp file IDs and triggers the Upload File action. The process engine detects the list key and routes the request through the bulk Kafka path.4
Documents persisted
The document plugin receives the bulk persist request, processes each file individually, and returns a response with per-file results (including partial success handling).
Important behavior
Document type and storage
Document type and storage
All files uploaded through this component share the same
customId and use documentType=BULK with shouldOverride=false. This means:- Multiple files accumulate under the same
customId— they are stored as separate documents, not as a single archive - Re-uploading does not replace previous files — it adds new ones alongside the existing documents
- If you need to replace previously uploaded files, you must delete them separately before re-uploading
Validation scope
Validation scope
Validation runs client-side before upload:
- File type — validated per file against the
acceptproperty - File count — validated against
maxFiles(total selected files) - Total size — validated against
maxFilesSize(sum of all file sizes)
Upload feedback
Upload feedback
The component provides an overall loading state (overlay or none) during the upload. Individual per-file progress indicators are not available — the upload is treated as a single batch operation.After the upload completes, the component clears its state (file list), hides the loader, and shows a success or error toast (if configured).
File selection UX
File selection UX
Users can add files incrementally:
- Drag and drop files into the zone multiple times
- Click Browse Files multiple times to add more
- Each selected file appears as a card showing file name and size
- Individual files can be removed with the delete button before uploading
- The Remove Files button clears all selected files at once
Theming
The Multiple File Upload component supports full theming through Theme Admin. The component is registered undercontentWeb → components → bulkFileUpload.
- Drop zone
- File items
- Caption
Icons
The component uses three system icons that are included automatically via CMS migration:Substitution tags
The component also registers system substitution tags for localization and accessibility:
These tags are automatically available after CMS migration and can be customized per language in the CMS.
Related resources
Upload file action
Configure the backend action for single and multi-file uploads
Uploading a new document
End-to-end document upload scenario with the document plugin
File Upload Button
Single-file upload button component
File preview
Display uploaded documents inline

