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