FastAPI でファイルのアップロードと処理を実装する方法
FastAPI は、使いやすく強力な最新の高パフォーマンス Web フレームワークで、ファイルのアップロードと処理のネイティブ サポートを提供します。この記事では、FastAPI フレームワークでファイルのアップロードおよび処理関数を実装する方法を学び、具体的な実装手順を示すコード例を示します。
まず、必要なライブラリとモジュールをインポートする必要があります:
from fastapi import FastAPI, UploadFile, File from fastapi.responses import JSONResponse import shutil import os
次に、FastAPI アプリケーション インスタンスを作成する必要があります:
app = FastAPI()
これで、ルートを定義できます。ファイルのアップロード リクエストを受け入れ、ファイルをサーバーに保存します。
@app.post("/upload/") async def create_upload_file(file: UploadFile = File(...)): try: # 保存文件到服务器上 with open(file.filename, "wb") as buffer: shutil.copyfileobj(file.file, buffer) # 返回成功的响应 return JSONResponse({"message": "File uploaded successfully"}) except Exception as e: # 返回失败的响应 return JSONResponse({"error": str(e)}, status_code=500)
上記のコードでは、POST
リクエスト ルート /upload/
を定義します。 file
という名前のパラメータ、パラメータのタイプは UploadFile
です。File
関数を使用して、リクエスト本文内のファイルとして解析します。 File
関数の最初のパラメータはファイル タイプのデフォルト値です。...
は、このパラメータを渡す必要があることを意味します。渡さないと、エラー応答が返されます。
ファイル アップロード リクエストを処理するときは、まず with open
を使用してファイル書き込みストリームを作成し、次に shutil.copyfileobj
関数を使用してリクエスト本文を配置します。 into ファイル オブジェクトがサーバーにコピーされます。
ファイルが正常にアップロードされると、成功メッセージを含む JSON 応答が返されます。ファイルのアップロード中に例外が発生した場合は、エラー情報を含む JSON 応答が返され、応答ステータス コードが 500 に設定されます。
ファイルアップロード機能を実装した後、引き続きファイル処理機能を実装できます。以下は、アップロードされた画像ファイルを受け入れ、画像ファイルをサムネイルに変換するルートの例です。
@app.post("/process_image/") async def process_image(file: UploadFile = File(...)): try: # 保存文件到服务器上 with open(file.filename, "wb") as buffer: shutil.copyfileobj(file.file, buffer) # 进行图片处理,生成缩略图 thumbnail_filename = f"thumbnail_{file.filename}" # 模拟图片处理过程 # 请根据实际需求进行实现 # ... # 返回缩略图的下载链接 return JSONResponse({"thumbnail_url": f"/download/{thumbnail_filename}"}) except Exception as e: # 返回失败的响应 return JSONResponse({"error": str(e)}, status_code=500)
上記のコード例では、同じファイル アップロード プロセスを使用してから、画像処理ロジックに移りました。ここでは、シミュレーションを使用して画像ファイルを処理し、サムネイルを生成し、サムネイルのダウンロード リンクをクライアントに返します。
最後に、ダウンロード機能を提供するルートを定義することもできます。
@app.get("/download/{filename}") async def download_file(filename: str): try: # 返回文件下载链接 return JSONResponse({"download_url": f"/file/{filename}"}) except Exception as e: # 返回失败的响应 return JSONResponse({"error": str(e)}, status_code=500)
上記のコードでは、GET
リクエスト ルート /download / を定義します。 {filename}
、このルートはファイル名パラメータ filename
を受け入れ、ファイルのダウンロード リンクを返します。
これで、ファイルのアップロードと処理の機能が FastAPI フレームワークに実装されました。上記のサンプル コードを通じて、FastAPI でのファイルのアップロードと処理の基本的なプロセス、およびこれらの機能を実装するための FastAPID の API とメソッドの使用方法を理解できます。もちろん、特定のファイル処理ロジックは実際のニーズに応じてカスタマイズできます。
この記事が、FastAPI でファイルのアップロードと処理関数を実装する方法を理解するのに役立つことを願っています。
以上がFastAPI でファイルのアップロードと処理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。