Skip to main content

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

filetypes
Sequence[str]
Accepted file extensions (e.g., [“.pdf”, “.jpg”])
multiple
bool
default:"False"
Allow multiple file uploads
kind
'button' | 'area'
default:"'button'"
Upload interface style
max_size
int
default:"100_000_000"
Maximum file size in bytes (default 100MB)
label
str
default:"''"
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

Build docs developers (and LLMs) love