Default File Upload Limits in Pixelle-Video: Configuration and Implementation Guide
Pixelle-Video enforces a default 100 MB file upload limit for all assets, defined centrally in the APIConfig class in api/config.py.
The AIDC-AI Pixelle-Video repository implements a unified file size ceiling that governs uploads across its entire architecture—from FastAPI backend endpoints to Streamlit frontend components. Understanding this limit and how to work with it is essential for developers integrating with or extending the platform.
Where the Upload Limit Is Defined
The authoritative source for Pixelle-Video's file upload restrictions resides in a single configuration file.
The APIConfig Class in api/config.py
In [api/config.py](https://github.com/AIDC-AI/Pixelle-Video/blob/main/api/config.py) at line 39, the APIConfig Pydantic model declares:
max_upload_size: int = 100 * 1024 * 1024 # 100 MB
This 100 MB default applies globally unless explicitly overridden through custom configuration instances. The comment makes the intent unambiguous, while the byte-level calculation (100 * 1024 * 1024 = 104,857,600 bytes) ensures precise enforcement.
How the Upload Limit Propagates Through the System
Pixelle-Video's architecture ensures consistent enforcement by threading this configuration through multiple layers.
Backend Enforcement in FastAPI
The api/app.py module initializes the FastAPI application with the APIConfig instance. Route handlers throughout the backend import this configuration and validate uploads against max_upload_size before processing.
Frontend Enforcement in Streamlit
Streamlit-based UI components in web/pipelines/ (including asset_based.py and digital_human.py) access the same APIConfig via the shared Python package. This allows frontend code to:
- Display the current limit to users
- Perform pre-flight client-side validation
- Handle server-side rejection gracefully
Task Queue Integration
The api/tasks/manager.py module consults max_upload_size when queuing background tasks that involve uploaded assets, preventing oversized files from entering the processing pipeline.
Validating Uploads Against the Limit: Code Examples
These practical patterns demonstrate how to work with Pixelle-Video's default file upload limit in both backend and frontend contexts.
Backend Validation Pattern
from pixelle_video.api.config import api_config
def validate_upload(file_bytes: bytes) -> None:
"""Raise ValueError if file exceeds the platform upload limit."""
if len(file_bytes) > api_config.max_upload_size:
max_mb = api_config.max_upload_size // (1024 * 1024)
raise ValueError(
f"File size exceeds the allowed limit of {max_mb} MB"
)
# Proceed with processing...
Streamlit Frontend Integration
import streamlit as st
from pixelle_video.api.config import api_config
# Convert bytes to MB for user-friendly display
max_mb = api_config.max_upload_size // (1024 * 1024)
uploaded = st.file_uploader(
f"Upload your asset (max {max_mb} MB)",
type=["png", "jpg", "jpeg", "mp4", "mov", "wav", "mp3"]
)
if uploaded is not None:
# Double-check size (Streamlit client-side validation may vary by version)
if uploaded.size > api_config.max_upload_size:
st.error(f"Selected file exceeds the {max_mb} MB upload limit.")
else:
st.success(f"File accepted: {uploaded.name}")
# Proceed with API call...
Key Configuration Files Reference
| File Path | Purpose |
|---|---|
[api/config.py](https://github.com/AIDC-AI/Pixelle-Video/blob/main/api/config.py) |
Defines APIConfig.max_upload_size (100 MB default) |
api/app.py |
FastAPI initialization with configuration propagation |
web/pipelines/asset_based.py |
Streamlit UI for asset uploads |
web/pipelines/digital_human.py |
Streamlit UI for digital human pipeline uploads |
api/tasks/manager.py |
Task queue integration with size validation |
Summary
- Pixelle-Video's default file upload limit is 100 MB, defined as
100 * 1024 * 1024bytes inapi/config.py. - The
APIConfigclass centralizes this setting, ensuring consistent enforcement across FastAPI backends, Streamlit frontends, and background task queues. - Developers should import
api_configfrompixelle_video.api.configto access the current limit programmatically rather than hardcoding values. - File path references: configuration lives in [
api/config.py](https://github.com/AIDC-AI/Pixelle-Video/blob/main/api/config.py), with consumption patterns visible inapi/app.py,web/pipelines/modules, andapi/tasks/manager.py.
Frequently Asked Questions
Can the default upload limit be increased or customized?
Yes. Since max_upload_size is a Pydantic field on APIConfig, you can instantiate a custom configuration with a different value. However, doing so requires ensuring all consuming components (backend, frontend, task workers) use the same configuration instance to avoid inconsistent enforcement.
Does Pixelle-Video have separate limits for different file types?
No. The current implementation uses a single max_upload_size value that applies uniformly to all uploads—images, videos, audio, and other asset types. Type-specific validation (e.g., format restrictions) exists in pipeline code, but size enforcement is global.
How does the frontend know the current upload limit?
Streamlit components import api_config from pixelle_video.api.config and read max_upload_size dynamically. This allows the UI to display the correct limit to users and perform client-side validation before sending data to the backend.
What happens if a file exceeds the upload limit?
The backend raises a validation error (typically through FastAPI's request handling or explicit checks in route handlers), returning an HTTP 422 or 413 response. Frontend components catch oversized selections before submission and display user-friendly error messages.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →