FastAPI は、クリーンで効率的な方法を提供する最新の高性能 Web フレームワークです。 API を構築します。ファイルのアップロードは、多くの Web アプリケーションで必要となる基本的な機能です。これを容易にするために、FastAPI はファイル アップロード処理用の複数のオプションを提供します。
特定のシナリオでは、FastAPI ドキュメントに従ってファイルをアップロードすると、file2store 変数が常に空のままになります。この問題は、Python の UploadFile またはバイト アプローチを利用しようとしても解決しません。
この問題を解決するには、次の措置を講じることができます。
1. Python-Multipart のインストール
FastAPI はアップロードされたファイルを送信するためにフォーム データを使用します。 「python-multipart」をインストールすると、アップロードされたファイルが正しく処理されるようになります。
pip install python-multipart
2.メモリに優しいファイル処理を使用する
FastAPI は、SpooledTemporaryFile オブジェクトを使用して、アップロードされたファイルをメモリに保存します。ファイル サイズが 1 MB を超える場合、ファイルはディスク上の一時ファイルに書き込まれます。大きなファイルの場合は、次のオプションを検討してください:
3.エンドポイントのブロックを避ける
ファイルのアップロードを処理するときは、エンドポイント関数を async def ではなく def で定義する必要があります。これにより、ファイル操作の完了を待機している間にサーバーがブロックされるのを防ぎます。
4.追加のデータ転送を許可する
ファイルのアップロードとともにデータを送信する必要がある場合は、提供されている回答を参考にしてください。
5.エンドポイントの違いを理解する
def エンドポイントと async def エンドポイントの違いと、それらがファイル処理に与える影響について理解します。
次の点を考慮してください。コード スニペットの例:
from fastapi import File, UploadFile @app.post("/upload") def upload(file: UploadFile = File(...)): try: contents = file.file.read() with open(file.filename, 'wb') as f: f.write(contents) except Exception: return {"message": "Error uploading file"} finally: file.file.close() return {"message": f"Successfully uploaded {file.filename}"}
このコードはファイルのアップロードを処理し、コンテンツを保存します。アップロードされたファイルと同じ名前のファイル。問題が発生した場合は、提供されているリソースを参照してサポートを受けてください。
以上がFastAPI ファイル アップロード変数が常に空なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。