Types

This module contains the data structures used throughout litestar-storages for representing file metadata and operation results.

StoredFile

The primary data structure for file metadata, returned by most storage operations.

class litestar_storages.types.StoredFile[source]

Bases: object

Metadata for a stored file.

Variables:
  • key – Storage path/key for the file

  • size – File size in bytes

  • content_type – MIME type of the content

  • etag – Entity tag for the file (useful for caching/versioning)

  • last_modified – Timestamp of last modification

  • metadata – Additional metadata stored with the file

Parameters:

Example

from litestar_storages import StoredFile

# StoredFile is a frozen dataclass
file = StoredFile(
    key="uploads/document.pdf",
    size=1024000,
    content_type="application/pdf",
    etag="d41d8cd98f00b204e9800998ecf8427e",
    last_modified=datetime.now(tz=timezone.utc),
    metadata={"uploaded_by": "user123"},
)

# Access attributes
print(f"File: {file.key}, Size: {file.size} bytes")
key: str
size: int
content_type: str | None = None
etag: str | None = None
last_modified: datetime | None = None
metadata: dict[str, str]
__init__(key, size, content_type=None, etag=None, last_modified=None, metadata=<factory>)
Parameters:

UploadResult

Result container for upload operations that includes both file metadata and an optional access URL.

class litestar_storages.types.UploadResult[source]

Bases: object

Result of an upload operation.

Variables:
  • file – Metadata about the uploaded file

  • url – Optional URL for accessing the file

Parameters:

Example

from litestar_storages import UploadResult, StoredFile

result = UploadResult(
    file=StoredFile(
        key="uploads/image.jpg",
        size=50000,
        content_type="image/jpeg",
    ),
    url="https://bucket.s3.amazonaws.com/uploads/image.jpg?signature=...",
)

# Use in responses
return {
    "uploaded": result.file.key,
    "download_url": result.url,
}
file: StoredFile
url: str | None = None
__init__(file, url=None)
Parameters:

Type Aliases

The library also uses these standard Python types:

from collections.abc import AsyncGenerator, AsyncIterator

# Data input types (accepted by put())
DataInput = bytes | AsyncGenerator[bytes, None]

# Stream output type (returned by get())
DataStream = AsyncIterator[bytes]