Skip to main content

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