> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/gradio-app/gradio/llms.txt
> Use this file to discover all available pages before exploring further.

# UploadButton

> Create dedicated file upload buttons

The UploadButton component creates a button that opens a file upload dialog when clicked.

## Basic usage

```python theme={null}
import gradio as gr

def process_file(file):
    return f"Uploaded: {file.name}"

with gr.Blocks() as demo:
    upload_btn = gr.UploadButton("Click to Upload")
    output = gr.Textbox()
    
    upload_btn.upload(fn=process_file, inputs=upload_btn, outputs=output)
    
demo.launch()
```

## Constructor

<ParamField path="label" type="str" default="'Upload a File'">
  Button label text
</ParamField>

<ParamField path="file_count" type="Literal['single', 'multiple', 'directory']" default="'single'">
  Upload mode:

  * `"single"` - One file
  * `"multiple"` - Multiple files
  * `"directory"` - All files in directory
</ParamField>

<ParamField path="file_types" type="list[str] | None" default="None">
  Allowed file types (e.g., `[".pdf"]`, `["image"]`, `["audio"]`)
</ParamField>

<ParamField path="type" type="Literal['filepath', 'binary']" default="'filepath'">
  Return format:

  * `"filepath"` - String path to file
  * `"binary"` - Bytes object
</ParamField>

<ParamField path="variant" type="Literal['primary', 'secondary', 'stop']" default="'secondary'">
  Button style variant
</ParamField>

<ParamField path="size" type="Literal['sm', 'md', 'lg']" default="'lg'">
  Button size
</ParamField>

## Events

* **click** - Triggered when button is clicked
* **upload** - Triggered when file upload completes

## Examples

### Images only

```python theme={null}
import gradio as gr

upload = gr.UploadButton(
    "Upload Image",
    file_types=["image"],
    variant="primary"
)
```

### Multiple files

```python theme={null}
import gradio as gr

def handle_files(files):
    return "\n".join([f.name for f in files])

with gr.Blocks() as demo:
    upload = gr.UploadButton(
        "Upload Files",
        file_count="multiple"
    )
    files_list = gr.Textbox()
    
    upload.upload(fn=handle_files, inputs=upload, outputs=files_list)
    
demo.launch()
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.