ホームページ >バックエンド開発 >Python チュートリアル >FastAPI でデータを POST した後にファイルをダウンロードするにはどうすればよいですか?

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 10:04:30867ブラウズ

How to Download a File after POSTing Data with FastAPI?

FastAPI を使用してデータを POST した後にファイルをダウンロードするには?

FastAPI を使用する場合、データを投稿した後のファイルのダウンロードは、ファイルレスポンスクラス。これを実現するには:

  1. フォーム データ エンドポイントを定義します: Form キーワードを使用して、エンドポイントで予期されるフォーム データを定義します。必須パラメータが Form(...) で必要に応じて設定されていることを確認してください。
  2. 応答を処理して生成します: 受信したデータを処理してファイルを生成した後、FileResponse を使用してファイルをユーザーに送信します。
  3. Set Content-Disposition ヘッダー: ダウンロードを開始するには、'attachment' パラメーターを使用して FileResponse の Content-Disposition ヘッダーを設定します。
  4. FileResponse を返す: ファイルのダウンロードをトリガーするためのヘッダーが正しいことを確認して、FileResponse をクライアントに送り返します。

次に例を示します:

<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>

エンドポイントで GET リクエストと POST リクエストの両方を処理できるようにする場合は、methods=["GET", "POST"] で @app.api_route() を使用するか、@app.post() と @app で別のエンドポイントを定義することを覚えておいてください。 get().

さらに、複数のファイルをダウンロードする予定がある場合、またはより柔軟性が必要な場合は、次のような他の概念の使用を検討してください。

  • StreamingResponse:チャンク内の大きなファイルの場合は、FileResponse の代わりに StreamingResponse を使用します。
  • JavaScript と Fetch API: フロントエンドでは、JavaScript と Fetch API を利用してファイルのダウンロード プロセスを開始します。
  • Key-Value ストア/データベース: 複数のユーザーとファイルを同時に処理するには、Key-Value ストアまたはデータベースを使用してファイル パスを一意の識別子にマップすることを検討してください。

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

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