mo.ui.file
Create a file upload input for uploading files.
Signature
mo.ui.file(
filetypes: Sequence[str] | None = None,
multiple: bool = False,
kind: Literal["button", "area"] = "button",
*,
max_size: int = 100_000_000,
label: str = "",
on_change: Callable[[Sequence[FileUploadResults]], None] | None = None
)
Parameters
Accepted file extensions (e.g., [“.pdf”, “.jpg”])
Allow multiple file uploads
kind
'button' | 'area'
default:"'button'"
Upload interface style
Maximum file size in bytes (default 100MB)
Markdown label for the file input
Examples
import marimo as mo
# Basic file upload
upload = mo.ui.file(label="**Upload a file:**")
upload
# Specific file types
image_upload = mo.ui.file(
filetypes=[".jpg", ".png", ".gif"],
kind="area",
label="Upload an image"
)
# Multiple files
multi_upload = mo.ui.file(
multiple=True,
max_size=10_000_000, # 10MB
label="Upload multiple files"
)
# Access uploaded file data
if upload.value:
file = upload.value[0]
mo.md(f"""
**Uploaded:**
- Name: {file.name}
- Size: {len(file.contents)} bytes
- Type: {file.type}
""")
FileUploadResults
Each uploaded file has:
name: Filename
contents: File contents as bytes
type: MIME type