Maison > développement back-end > Tutoriel Python > Comment télécharger un fichier après avoir publié des données avec FastAPI ?

Comment télécharger un fichier après avoir publié des données avec FastAPI ?

Mary-Kate Olsen
Libérer: 2024-11-01 10:04:30
original
945 Les gens l'ont consulté

How to Download a File after POSTing Data with FastAPI?

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 :

  1. 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(...).
  2. 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.
  3. 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'.
  4. 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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal