Utiliser des formulaires et des fichiers de requête¶
🌐 Traduction par IA et humains
Cette traduction a été réalisée par une IA guidée par des humains. 🤝
Elle peut contenir des erreurs d'interprétation du sens original, ou paraître peu naturelle, etc. 🤖
Vous pouvez améliorer cette traduction en nous aidant à mieux guider le LLM d'IA.
Vous pouvez définir des fichiers et des champs de formulaire en même temps à l'aide de File et Form.
Info
Pour recevoir des fichiers téléversés et/ou des données de formulaire, installez d'abord python-multipart.
Vous devez créer un environnement virtuel, l'activer, puis installer ce paquet, par exemple :
$ pip install python-multipart
Importer File et 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,
}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(), fileb: UploadFile = File(), token: str = Form()
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
Définir des paramètres File et Form¶
Créez des paramètres de fichier et de formulaire de la même manière que pour Body ou 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,
}
🤓 Other versions and variants
Tip
Prefer to use the Annotated version if possible.
from fastapi import FastAPI, File, Form, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(), fileb: UploadFile = File(), token: str = Form()
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
Les fichiers et les champs de formulaire seront téléversés en tant que données de formulaire et vous les recevrez.
Et vous pouvez déclarer certains fichiers comme bytes et d'autres comme UploadFile.
Alertes
Vous pouvez déclarer plusieurs paramètres File et Form dans un chemin d'accès, mais vous ne pouvez pas aussi déclarer des champs Body que vous vous attendez à recevoir en JSON, car la requête aura le corps encodé en multipart/form-data au lieu de application/json.
Ce n'est pas une limitation de FastAPI, cela fait partie du protocole HTTP.
Récapitulatif¶
Utilisez File et Form ensemble lorsque vous devez recevoir des données et des fichiers dans la même requête.