---
url: "https://vueda.dev/v3/reference/api/vue/FileUpload.md"
title: "FileUpload"
---

# FileUpload

## Overview

A file-upload control with a hidden native file input, a styled trigger button,
and an optional drag-and-drop zone. Emits the selected File via v-model.

Theme entry: [FileUpload](/v3/reference/theming/keys/FileUpload.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-iconOverride">iconOverride</span> | `Object` |  | `null` | A partial icon registry (`{ [componentName]: { [iconName]: { component, props } } }`) merged with inherited and default icon entries; scopes icon overrides to this component and its descendants. |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-modelValue">modelValue</span> | `File\|object` |  | `null` | The currently selected File, or null. |
| <span id="prop-accept">accept</span> | `string` |  | `"*"` | MIME type filter passed to the native file input (e.g. `"image/*"` or `".pdf"`). |
| <span id="prop-maxFileSize">maxFileSize</span> | `number` |  | `1000000` | Maximum allowed file size in bytes. Files exceeding this limit are silently rejected. |
| <span id="prop-disabled">disabled</span> | `boolean` |  | `false` | When true, prevents interaction with the control. |
| <span id="prop-dropzone">dropzone</span> | `boolean` |  | `false` | When true, renders a drag-and-drop zone around the trigger. |
| <span id="prop-class">class</span> | `import('vue').HTMLAttributes['class']` |  | `undefined` | Additional CSS classes to apply to the root element. |
| <span id="prop-as">as</span> | `string\|object` |  | `"div"` | The element or component to render the root as. |
| <span id="prop-asChild">asChild</span> | `boolean` |  | `false` | When true, merges props onto the child element instead of rendering a wrapper. |

## Slots

### `default` {#slot-default}

Scoped slot.

#### Bindings

| Name | Description |
| --- | --- |
| <span id="slot-default-param-open">open</span> |  |
| <span id="slot-default-param-dragging">dragging</span> |  |

### `trigger-content` {#slot-trigger-content}

Slot.

### `drop-message` {#slot-drop-message}

Slot.

## Events

| Name | Description |
| --- | --- |
| `update:modelValue` | Emitted when the value changes. |

[Full event reference](/v3/reference/api/vue/FileUpload/events.md)

## Source

`client/lib/controls/file-upload/FileUpload.vue`
