6. File Uploads

Note: BPMN does not have a native file form property type. File uploads are implemented using the type hint pattern.

How to Enable File Uploads

Use <activiti:value id="type" name="file"/> inside a string type form property:

<userTask id="submitReport" name="Submit Report">
    <extensionElements>
        <activiti:formProperty id="receipt" name="Upload Receipt" type="string" required="true">
            <activiti:value id="type" name="file"/>
        </activiti:formProperty>
    </extensionElements>
</userTask>

Behavior

  • The UI renders as <input type="file">
  • When the task is completed, the file is saved to the configured storage backend (the local uploads/ folder by default)
  • The process variable stores the generated filename (UUID-based) as a string

File Handling Features

Feature Status Notes
File Upload ✅ Supported Attach files during task completion
Multi-File Upload ✅ Supported Multiple file fields per task
Instance-Based Storage ✅ Supported Files organized by process instance ID
Secure Download ✅ Supported Only process participants can download

Storage Backends

Storage is pluggable — the active backend is chosen at startup via bpmncentral.storage.type, and exactly one is active at a time. File uploads, downloads, and generated PDFs all use the selected backend transparently; your BPMN never changes.

Backend bpmncentral.storage.type Status
Local filesystem (default) local ✅ Supported
Azure Blob Storage azure ✅ Supported
AWS S3 aws ✅ Supported
Google Cloud Storage gcs ✅ Supported