Media Upload
A file upload field supporting images, documents, and other media types.
Overview
The Media Upload field allows respondents to upload one or more files as part of their form submission. It supports drag-and-drop as well as click-to-browse. Uploaded files are stored securely and a reference URL is included in the submission data.
You can restrict the allowed file types using MIME types or file extensions, limit the maximum file size, and control whether single or multiple files are allowed. Image uploads show a preview thumbnail after selection.
Properties
| Property | Type | Default | Description |
|---|---|---|---|
| type | string | — | The field type identifier (e.g. "text", "email"). |
| label | string | — | Human-readable label shown above the field. |
| name | string | — | Unique machine name used as the data key in submissions. |
| required | boolean | false | When true the form cannot be submitted without a value. |
| placeholder | string | undefined | Ghost text shown inside the input when empty. |
| defaultValue | any | undefined | Pre-filled value when the form loads. |
| hidden | boolean | false | Hides the field from the rendered form (still submitted). |
| disabled | boolean | false | Renders the field as read-only and non-interactive. |
| description | string | undefined | Helper text displayed below the field label. |
| className | string | undefined | Additional CSS class applied to the field wrapper. |
| accept | string | "*" | Comma-separated MIME types or extensions (e.g. "image/*,.pdf"). |
| multiple | boolean | false | Allow uploading more than one file at a time. |
| maxFiles | number | 1 | Maximum number of files (when multiple is true). |
| maxFileSize | number | 10 | Maximum file size in megabytes per file. |
| showPreview | boolean | true | Show thumbnail preview for uploaded images. |
JSON Schema
{
"type": "media",
"label": "Supporting Documents",
"name": "documents",
"required": false,
"accept": ".pdf,.docx,.xlsx",
"multiple": true,
"maxFiles": 5,
"maxFileSize": 20,
"showPreview": false
}