Comment télécharger des fichiers après avoir publié des données à l'aide de FastAPI ?

Linda Hamilton
Libérer: 2024-11-01 10:26:30
original
255 Les gens l'ont consulté

How to Download Files After POSTing Data using FastAPI?

Téléchargement de fichiers après la publication de données à l'aide de FastAPI

Lors du développement d'applications Web qui doivent recevoir les entrées de l'utilisateur, les traiter, puis fournir un fichier à télécharger, la possibilité de faciliter correctement cet échange est crucial. FastAPI fournit un cadre robuste pour créer de telles applications, et ce guide explorera comment télécharger efficacement un fichier après le traitement des données POST.

Implémentation de la fonction

Tout d'abord, définissez un point de terminaison dans votre application FastAPI. pour gérer la demande de téléchargement de fichier. Ce point de terminaison recevra le chemin du fichier et renverra le fichier en réponse. Un exemple d'implémentation utilisant la classe FastAPI FileResponse :

<code class="python">from fastapi import FastAPI, FileResponse, Request
from fastapi.responses import FileResponse

app = FastAPI()

@app.post('/download-file')
async def download_file(request: Request, user_id: int = Form(...)):
    file_path = 'path/to/file.mp3'
    return FileResponse(file_path, media_type='audio/mp3', filename='output.mp3')</code>
Copier après la connexion

Dans ce code, la variable file_path doit être remplacée par le chemin réel du fichier qui doit être téléchargé. Les paramètres media_type et filename spécifient le type de fichier et le nom sous lequel il sera téléchargé.

Utiliser HTML pour déclencher le téléchargement

Après avoir défini le point de terminaison, intégrez un formulaire HTML dans votre frontend qui déclenche une requête POST au point de terminaison /download-file et fournit le paramètre user_id nécessaire :

<code class="html"><form action="/download-file" method="post">
    <input type="text" name="user_id" placeholder="Enter user ID">
    <input type="submit" value="Download File">
</form></code>
Copier après la connexion

Lorsque le formulaire est soumis, une requête POST avec l'id_utilisateur spécifié sera envoyée au /download-file point de terminaison, qui traitera ensuite la demande et renverra le fichier pour téléchargement.

Gestion des téléchargements de fichiers volumineux

Si le fichier à télécharger est particulièrement volumineux, envisagez d'utiliser la classe StreamingResponse dans FastAPI :

<code class="python">from fastapi import FastAPI, Response, StreamingResponse

@app.post('/stream-large-file')
async def download_large_file(request: Request, user_id: int = Form(...)):
    file_path = 'path/to/large_file.mp3'
    async def iter_file():
        with open(file_path, 'rb') as f:
            while chunk := f.read(1024):
                yield chunk
    return StreamingResponse(iter_file(), media_type='audio/mp3', filename='output.mp3')</code>
Copier après la connexion

Ici, la fonction iter_file lit le fichier par morceaux pour réduire la consommation de mémoire et facilite le streaming du fichier.

Conclusion

En suivant les étapes décrites ci-dessus, vous pouvez créer des applications FastAPI qui gèrent de manière transparente les téléchargements de fichiers après les opérations POST. Cela permet à vos applications d'offrir des fonctionnalités de téléchargement, enrichissant l'expérience utilisateur et facilitant l'accès aux fichiers générés.

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!

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!