File uploads on public forms
Limits, allowed types, storage location, and viewing uploaded files.
Overview
Forms can include a File upload field that lets respondents attach files to their submission. Files are stored on the configured storage disk (local or S3) and accessible from the submission detail view.
Adding a file upload field
1. Open the form builder.
2. Click File in the Field library.
3. In the field editor, configure:
- Label — the visible prompt (e.g. "Attach your CV").
- Required — whether a file must be provided.
- Accepted file types — comma-separated MIME types or extensions (e.g. `image/*,.pdf`). Leave blank to allow all types configured by the platform.
- Max file size — the platform enforces a maximum defined by `SUBMISSION_MAX_FILE_SIZE_KB` in the server environment. Contact your platform operator if you need a higher limit.
Submitting a form with a file
The public form uses a standard `multipart/form-data` request when a file field is present. Respondents click the field to browse and select a file, then submit as normal.
Viewing uploaded files
1. Go to Forms → your form → Submissions.
2. Open a submission that includes a file upload.
3. The file field shows a download link. Click it to download the file.
Storage location
Files are stored at `storage/app/public/submissions/{form_uuid}/{filename}` by default (local disk). If S3 is configured (`FILESYSTEM_DISK=s3`), files go to the configured bucket under the same path structure.
File size and type limits
Platform-level limits are set by the server operator:
- `SUBMISSION_MAX_FILE_SIZE_KB` — maximum upload size in kilobytes.
- Allowed MIME types are configured in `config/security.php`.
If a submission is rejected because the file is too large or the type is not allowed, the respondent sees a validation error before the form is submitted.
Data retention and deletion
Uploaded files are deleted along with their submission when:
- A submission is manually deleted.
- The form's data retention policy automatically expires the submission.