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.
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>
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é.
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>
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.
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>
Ici, la fonction iter_file lit le fichier par morceaux pour réduire la consommation de mémoire et facilite le streaming du fichier.
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!