ユーザー入力を受信して処理し、ダウンロード用のファイルを提供する必要がある Web アプリケーションを開発する場合、この交換を適切に促進することが重要です。 FastAPI は、このようなアプリケーションを構築するための堅牢なフレームワークを提供します。このガイドでは、POST データの処理後にファイルを効果的にダウンロードする方法を説明します。
まず、FastAPI アプリケーションでエンドポイントを定義します。ファイルのダウンロード要求を処理します。このエンドポイントはファイル パスを受信し、応答としてファイルを返します。 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>
このコードでは、file_path 変数を、ダウンロードする必要があるファイルへの実際のパスに置き換える必要があります。 media_type パラメータと filename パラメータは、ファイルのタイプとダウンロードされる名前を指定します。
エンドポイントを定義した後、HTML フォームをフロントエンドに組み込みます/download-file エンドポイントへの POST リクエストをトリガーし、必要な user_id パラメータを提供します:
<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>
フォームが送信されると、指定された user_id を持つ POST リクエストが /download-file に送信されます。
ダウンロードするファイルが特に大きい場合は、FastAPI の StreamingResponse クラスの使用を検討してください。
<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>
以上がFastAPI を使用してデータを POST した後にファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。