FastAPIは、Pythonで高速なAPIを構築するためのモダンで高速なWebフレームワークです。この記事では、FastAPIを使用してファイルをアップロードする方法について説明します。
FastAPIでのファイルアップロード
FastAPIを使用してファイルをアップロードするための基本的なコードは以下の通りです。
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(file: bytes = File(...)):
return {"file_size": len(file)}
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
return {"filename": file.filename}
このコードでは、/files/
と/uploadfile/
の2つのエンドポイントが作成されます。前者はファイルのバイトデータを受け取り、そのサイズを返します。後者はアップロードされたファイルの情報を受け取り、そのファイル名を返します。
ファイルのアップロードと保存
FastAPIでは、アップロードされたファイルを一時的に保存することも可能です。以下にその例を示します。
from fastapi import FastAPI, File, UploadFile, Form
import shutil
from pathlib import Path
from tempfile import NamedTemporaryFile
app = FastAPI()
@app.post("/saveuploadfile/")
async def save_upload_file_tmp(fileb: UploadFile=File(...), token:str=Form(...)):
tmp_path:Path = ""
try:
suffix = Path(fileb.filename).suffix
with NamedTemporaryFile(delete=False, suffix=suffix) as tmp:
shutil.copyfileobj(fileb.file, tmp)
tmp_path = Path(tmp.name)
finally:
fileb.file.close()
return {
"filename": fileb.filename,
"temporary_filepath": tmp_path,
"token": token,
"fileb_content_type": fileb.content_type,
}
このコードでは、/saveuploadfile/
エンドポイントが作成され、アップロードされたファイルを一時的なファイルとして保存します。そして、そのファイル名、一時ファイルのパス、トークン、およびファイルのコンテンツタイプを返します。
以上が、PythonとFastAPIを使用したファイルアップロードの基本的な方法です。FastAPIは非常に強力で柔軟なフレームワークであり、これらの基本的な機能を使用して、さまざまな種類のAPIを簡単に構築することができます。.