Comment télécharger un fichier après avoir publié des données à l'aide de FastAPI ?
Lorsque vous travaillez avec FastAPI, le téléchargement d'un fichier après la publication de données consiste à utiliser le Classe FileResponse. Pour y parvenir :
-
Définissez un point de terminaison de données de formulaire : Utilisez le mot-clé Form pour définir les données de formulaire attendues dans votre point de terminaison. Assurez-vous que les paramètres requis sont définis comme requis dans le formulaire(...).
-
Traitez et générez une réponse : Après avoir traité les données reçues et généré le fichier, utilisez FileResponse pour renvoyer le fichier à l'utilisateur.
-
Définir l'en-tête Content-Disposition : Pour lancer un téléchargement, définissez l'en-tête Content-Disposition dans FileResponse à l'aide du paramètre 'attachment'.
-
Renvoyer la FileResponse :Renvoyer la FileResponse au client, en vous assurant que les en-têtes sont corrects pour déclencher le téléchargement du fichier.
Voici un exemple :
<code class="python">@app.post("/download")
async def download_file(request: Request):
if request.method == "POST":
form = await request.form()
if form["message"] and form["language"]:
# Process the data and generate the file here
file_path = "path/to/file.mp3"
headers = {"Content-Disposition": f"attachment; filename=downloaded_file.mp3"}
return FileResponse(file_path, headers=headers, media_type="audio/mp3")</code>
N'oubliez pas que si vous souhaitez que le point de terminaison gère à la fois les requêtes GET et POST, utilisez soit @app.api_route() avec méthodes=["GET", "POST"] ou définissez des points de terminaison séparés avec @app.post() et @app. get().
De plus, si vous prévoyez de télécharger plusieurs fichiers ou si vous avez besoin de plus de flexibilité, envisagez d'utiliser d'autres concepts tels que :
-
StreamingResponse : Pour traiter fichiers volumineux en morceaux, utilisez StreamingResponse au lieu de FileResponse.
-
API JavaScript et Fetch : Dans le frontend, utilisez JavaScript et l'API Fetch pour lancer le processus de téléchargement de fichiers.
- Magasins de valeurs-clés/base de données : Pour gérer plusieurs utilisateurs et fichiers simultanément, envisagez d'utiliser un magasin de valeurs-clés ou une base de données pour mapper les chemins de fichiers à des identifiants uniques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn