ホームページ > バックエンド開発 > Python チュートリアル > FastAPI を使用してファイルをアップロードすると、file2store 変数が空になるのはなぜですか?

FastAPI を使用してファイルをアップロードすると、file2store 変数が空になるのはなぜですか?

Linda Hamilton
リリース: 2024-12-14 02:52:11
オリジナル
673 人が閲覧しました

Why is my file2store variable empty when uploading files with FastAPI?

FastAPI でファイルをアップロードするときに空の File2Store 変数を解決する方法

FastAPI 経由でファイルをアップロードしようとすると、空の file2store 変数が発生する場合がありますドキュメントのガイドラインに従っているにもかかわらず。この問題に対処するには、次のようないくつかの手順を実行できます。

1. python-multipart をインストールします:

アップロードされたファイルをフォーム データとして解析するために必要なため、python-multipart がインストールされていることを確認します。次のコマンドを使用します:

pip install python-multipart
ログイン後にコピー

2. .file 属性と def エンドポイントを使用します:

from fastapi import File, UploadFile

@app.post("/upload")
def upload(file: UploadFile = File(...)):
    # Get actual Python file and read/write contents
    contents = file.file.read()
    with open(file.filename, 'wb') as f:
        f.write(contents)
ログイン後にコピー

注: サーバーのブロックを防ぐため、この場合は async def ではなく def を使用してエンドポイントを定義します。

3. async def エンドポイントによる非同期読み取り/書き込み:

async def を使用する必要がある場合は、この回答で示されているように、内容の読み取りと書き込みに非同期メソッドを使用します。

4.大きなファイルのチャンクの処理:

アップロードされたファイルが使用可能な RAM より大きい場合は、提供されたコード例に示すように、ファイルをチャンク単位でメモリにロードし、データを一度に 1 チャンクずつ処理します。 .

複数のファイルのアップロード:

複数のファイルを 1 つのファイルとしてアップロードするにはFastAPI でリストを作成するには、次のガイドラインに従ってください:

from fastapi import File, UploadFile
from typing import List

# For a single file, use:
# @app.post("/upload")
def upload(file: List[UploadFile] = File(...)):

# For a list of files, use:
# @app.post("/upload")
async def upload_multiple(files: List[UploadFile] = File(...)):
ログイン後にコピー

要約すると、python-multipart をインストールし、UploadFile オブジェクトの .file 属性を使用し、大きなファイルのチャンクを処理し、必要に応じて非同期操作を考慮することで、 FastAPI を使用してファイルをアップロードするときに空の file2store 変数の問題を効果的に解決できます。

以上がFastAPI を使用してファイルをアップロードすると、file2store 変数が空になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート