ホームページ  >  記事  >  バックエンド開発  >  FastAPI を使用してデータを POST した後にファイルをダウンロードするにはどうすればよいですか?

FastAPI を使用してデータを POST した後にファイルをダウンロードするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-01 10:26:30250ブラウズ

How to Download Files After POSTing Data using FastAPI?

FastAPI を使用したデータの POST 後のファイルのダウンロード

ユーザー入力を受信して​​処理し、ダウンロード用のファイルを提供する必要がある 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 を使用してダウンロードをトリガーする

エンドポイントを定義した後、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>
🎜>

ここで、 iter_file 関数はファイルをチャンクで読み取り、メモリ消費を削減し、ファイルのストリーミングを促進します。

結論

上記の手順に従うことで、 POST 操作後のファイルのダウンロードをシームレスに処理する FastAPI アプリケーションを作成できます。これにより、アプリケーションがダウンロード機能を提供できるようになり、ユーザー エクスペリエンスが向上し、生成されたファイルへのアクセスが容易になります。

以上がFastAPI を使用してデータを POST した後にファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。