Skip to content

FileInput

File upload input with button mode and drag-and-drop zone support.

Button mode

The default: a styled button that opens the file picker. The button label updates to show the selected filename.

Tailwind v4
vue
<FileInput v-model="file" label="Choose a file" />

With accept filter

Use accept to restrict which file types the browser offers in the picker.

Tailwind v4
vue
<FileInput v-model="image" accept="image/*" label="Upload image" />

Multiple files

Tailwind v4
vue
<FileInput v-model="files" :multiple="true" label="Choose files" />

Drag-and-drop zone

Set dragDrop to render a dashed drop zone. The border turns blue while a file is dragged over.

Tailwind v4
vue
<FileInput v-model="file" :dragDrop="true" />

Drag-and-drop with accept

Tailwind v4
vue
<FileInput v-model="doc" :dragDrop="true" accept=".pdf,.doc,.docx" hint="PDF or Word documents only" />

Error state

Tailwind v4
vue
<FileInput v-model="file" label="Upload report" :error="errors.file" />

Disabled

Tailwind v4
vue
<FileInput v-model="file" label="Upload document" :disabled="true" />

Props

PropTypeDefaultDescription
modelValueFile | File[] | nullSelected file(s) (use with v-model)
multiplebooleanfalseAllow selecting multiple files
acceptstringAccepted file types (e.g. "image/*", ".pdf,.doc")
disabledbooleanfalseDisables the input
errorstringError message — shows danger border + text below
hintstringHint text below the input
labelstringButton label (button mode only)
dragDropbooleanfalseShow drag-and-drop zone instead of a button

Events

EventPayloadDescription
update:modelValueFile | File[] | nullEmitted when files are selected or dropped

Private — Jetpack Labs internal use only