Skip to content

FileField

Declarative definition of an upload field. A Pydantic model — invalid definitions fail at construction.

Constructor

FileField(
    name: str,
    max_count: int = 1,
    required: bool = False,
    config: StoreConfig | dict = StoreConfig(),
    engine: StorageEngine | None = None,
)
Parameter Type Default Description
name str Required HTML form field name (non-empty)
max_count int 1 Max files accepted for this field (≥ 1)
required bool False Fail if no files submitted
config StoreConfig \| dict StoreConfig() Per-field config (overrides store config)
engine StorageEngine \| None None Per-field engine override (instance, not class)

Validation

from filestore import FileField
from filestore.engines import MemoryEngine

# Valid
field = FileField(name="avatar", max_count=3, required=True)
field = FileField(name="raw", engine=MemoryEngine())

# Raises pydantic.ValidationError
FileField(name="")                       # empty name
FileField(name="f", max_count=0)         # count < 1
FileField(name="f", engine=MemoryEngine) # class instead of instance

Usage

from filestore import FileField, FileStore, S3Engine, StoreConfig

storage = FileStore(
    fields=[
        FileField(
            name="avatar",
            required=True,
            config=StoreConfig(
                allowed_extensions=[".jpg", ".png"],
                max_file_size=2 * 1024 * 1024,
            ),
        ),
        FileField(name="resume", max_count=3, engine=S3Engine(bucket="cvs")),
    ],
)