https://framer.com/m/Uploadfile-YsqDbu.js@9E1O8x3NpgmPvdI5JdSV

Io / Enhancements / FileUploadComponent

FileUploadComponent

FileUploadComponent gives a form a drop area that accepts files, turns away the wrong types and anything oversized, and shows the reader what they picked.

Enhancements12 controlsdrop areatype and size checks

Examples

Live specimens for every control the component exposes.

Default

Files can be dropped or chosen. The component checks type and size before accepting, then previews the result and fires onUploadComplete.

Drag & drop or click to browse: Max 10MB

What is accepted

allowAllFiles opens the gate to everything; turn it off and allowedTypes decides. maxFileSizeMB turns away anything larger, and multiple lets more than one file through at a time.

anything, 5 MB

Drag & drop or click to browse: Max 5MB

max 1 MB

Drag & drop or click to browse: Max 1MB

multiple files

Drag & drop or click to browse: Max 10MB · up to 10

States

required marks the field as mandatory in the surrounding form. successMessage is what the reader reads once a file is through, and showFilePreview decides whether they see it.

required

Drag & drop or click to browse: Max 10MB

no preview

Drag & drop or click to browse: Max 10MB

custom message

Drag & drop or click to browse: Max 10MB

Props

The controls exposed on the instance panel.

PropTypeBehaviour
n8nWebhookUrlstringn8n webhook the file is posted to. The workflow must answer with JSON: { url, name?, fileId? }.
folderIdstringSent to the workflow alongside the file. What it means is up to the n8n side.
fieldNamestringName of the hidden input carrying the uploaded URL, so a native form can submit it.
requiredbooleanMarks the field as mandatory in the surrounding form.
multiplebooleanAllows more than one file.
maxFilesnumberCeiling on how many, once multiple is on.
allowAllFilesbooleanAccepts any type; turn off to use allowedTypes.
allowedTypesarrayExtensions that are accepted.
maxFileSizeMBnumberLargest file that will be taken.
successMessagestringShown once a file is through.
showFilePreviewbooleanShows what was picked.
placeholderstringThe line the drop area reads before anything is chosen.
fontfontType for the drop area. Leave it empty and the theme supplies it.
textColor / iconColorcolorInk and icon inside the drop area.
background / border / radius / padding / shadowstyleShape and fill of the drop area.
errorColorcolorColour a refusal is written in.
onUploadCompleteeventFires once a file has been accepted.
PropTypeBehaviour
n8nWebhookUrlstringn8n webhook the file is posted to. The workflow must answer with JSON: { url, name?, fileId? }.
folderIdstringSent to the workflow alongside the file. What it means is up to the n8n side.
fieldNamestringName of the hidden input carrying the uploaded URL, so a native form can submit it.
requiredbooleanMarks the field as mandatory in the surrounding form.
multiplebooleanAllows more than one file.
maxFilesnumberCeiling on how many, once multiple is on.
allowAllFilesbooleanAccepts any type; turn off to use allowedTypes.
allowedTypesarrayExtensions that are accepted.
maxFileSizeMBnumberLargest file that will be taken.
successMessagestringShown once a file is through.
showFilePreviewbooleanShows what was picked.
placeholderstringThe line the drop area reads before anything is chosen.
fontfontType for the drop area. Leave it empty and the theme supplies it.
textColor / iconColorcolorInk and icon inside the drop area.
background / border / radius / padding / shadowstyleShape and fill of the drop area.
errorColorcolorColour a refusal is written in.
onUploadCompleteeventFires once a file has been accepted.

Usage

Guidance carried over from the component definition.

Reach for FileUploadComponent

A form needs an attachment as well as text fields.

The wrong type or an oversized file should be refused before submission.

Readers should see what they picked before sending it.

The reader should be told what is wrong before they try to submit.

Reach for something else

The file has to be stored somewhere — this hands it over, it does not host it.

You need a whole form — use SmartFormFields.

Uploads must resume or run in the background.

Io — Enhancements

Every specimen above is a live component instance. Colour, type and radius resolve from the project theme tokens.

io

An experiment in what a design system becomes when AI can consume it.

© 2026 io

Contact me

Create a free website with Framer, the website builder loved by startups, designers and agencies.