Media Module Overview
info
The Media module provides file storage and management with support for multiple filesystem backends.
Introduction
The Media module provides:
- File upload and storage
- Multiple filesystem backends (local, S3, etc.)
- File compression
- Metadata tracking
- Resource association
Quick Start
Configure Media
from fluvius.media import MediaInterface
media = MediaInterface(app=app)
Upload File
# Upload from file path
entry = await media.put(
fileobj='/path/to/file.jpg',
filename='photo.jpg',
resource='user',
resource_id=user_id,
mime_type='image/jpeg'
)
# Upload from bytes
entry = await media.put(
fileobj=file_bytes,
filename='document.pdf',
resource='document',
resource_id=doc_id
)
Retrieve File
# Get file metadata
entry = await media.get(media_id)
# Download file
file_data = await media.get_file(media_id)
Delete File
await media.delete(media_id)
Filesystem Backends
Local Filesystem
from fsspec import filesystem
fs = filesystem('file', path='/storage')
media = MediaInterface(app=app, filesystem_cache={'local': fs})
S3
from fsspec import filesystem
fs = filesystem('s3', key='...', secret='...', endpoint_url='...')
media = MediaInterface(app=app, filesystem_cache={'s3': fs})
Compression
from fluvius.media import FsSpecCompressionMethod
entry = await media.put(
fileobj=file_data,
filename='large-file.txt',
compress=FsSpecCompressionMethod.GZIP
)
Next Steps
- Read the Media API Reference
- Learn about FastAPI Media Integration
- Check out Examples