Request Forms and Files
You can define files and form fields at the same time using File and Form.
Import File and Form
Section titled “Import File and Form”from typing import Annotated
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: Annotated[bytes, File()],
fileb: Annotated[UploadFile, File()],
token: Annotated[str, Form()],
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}Define File and Form parameters
Section titled “Define File and Form parameters”Create file and form parameters the same way you would for Body or Query:
from typing import Annotated
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: Annotated[bytes, File()],
fileb: Annotated[UploadFile, File()],
token: Annotated[str, Form()],
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}The files and form fields will be uploaded as form data and you will receive the files and form fields.
And you can declare some of the files as bytes and some as UploadFile.
Use File and Form together when you need to receive data and files in the same request.