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")),
],
)