ホームページ >バックエンド開発 >Python チュートリアル >FastAPI での空のファイルのアップロードの問題を解決するには?

FastAPI での空のファイルのアップロードの問題を解決するには?

DDD
DDDオリジナル
2024-12-20 14:48:10738ブラウズ

How to Solve Empty File Upload Issues in FastAPI?

FastAPI を使用してファイルをアップロードする方法?

問題:
FastAPI を使用してファイルをアップロードする場合公式ドキュメントでは、file2store 変数はそのままです。 empty.

原因:

  • python-multipart がインストールされていることを確認してください。
  • def エンドポイントを使用する場合、.file を使用できます。属性を使用して実際の Python ファイルにアクセスし、そのメソッドを呼び出します
  • 非同期 def エンドポイントを使用する場合は、非同期ファイル操作を考慮してください。
  • ファイルが大きすぎる場合は、それに応じてチャンク サイズを調整してください。メモリ。

解決策:

app.py:

from fastapi import File, UploadFile

@app.post("/create_file")
def create_file(file: UploadFile = File(...)):
    try:
        contents = file.file.read()
        # store contents to the database
    except Exception:
        return {"message": "Error uploading file"}
    finally:
        file.file.close()
    return {"message": f"Successfully uploaded {file.filename}"}

非同期の代替エンドポイント:

@app.post("/create_file")
async def create_file(file: UploadFile = File(...)):
    try:
        contents = await file.read()
        # store contents to the database
    except Exception:
        return {"message": "Error uploading file"}
    finally:
        await file.close()
    return {"message": f"Successfully uploaded {file.filename}"}

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

from fastapi import File, UploadFile
from typing import List

@app.post("/upload")
def upload(files: List[UploadFile] = File(...)):
    for file in files:
        try:
            contents = file.file.read()
            # store contents to the database
        except Exception:
            return {"message": "Error uploading file(s)"}
        finally:
            file.file.close()
    return {"message": f"Successfully uploaded {[file.filename for file in files]}"}

Python スクリプトからのリクエスト:

requests.post(url="SERVER_URL/create_file", files={"file": (f.name, f, "multipart/form-data")})

以上がFastAPI での空のファイルのアップロードの問題を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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