Skip to main content
The UploadButton component creates a button that opens a file upload dialog when clicked.

Basic usage

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

label
str
default:"'Upload a File'"
Button label text
file_count
Literal['single', 'multiple', 'directory']
default:"'single'"
Upload mode:
  • "single" - One file
  • "multiple" - Multiple files
  • "directory" - All files in directory
file_types
list[str] | None
default:"None"
Allowed file types (e.g., [".pdf"], ["image"], ["audio"])
type
Literal['filepath', 'binary']
default:"'filepath'"
Return format:
  • "filepath" - String path to file
  • "binary" - Bytes object
variant
Literal['primary', 'secondary', 'stop']
default:"'secondary'"
Button style variant
size
Literal['sm', 'md', 'lg']
default:"'lg'"
Button size

Events

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

Examples

Images only

import gradio as gr

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

Multiple files

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()