FastAPI 学习之路(一)上传文件
UploadFile 的优势
- 文件存储在内存,达到阈值后,将保存到磁盘中
- 适用于 图片、视频大文件 …
- 可以获取上传文件的元数据,如 文件名、类型、创建时间 …
- 有文件对象的异步接口
- 上传的文件是 Python文件对象,可以使用 write()、read()、seed()、close() 进行操作
单个文件的上传
from typing import List
from fastapi import APIRouter, Body, File,UploadFile
router = APIRouter()
@router.post('/up_file', response_description="Worker data added into the database")
async def up_file(
file: UploadFile = File(...),
# files: List[UploadFile] = File(...) # 一次性上传多个文件
):
file_content = await file.read() # 读取文件
with open(file.filename,"wb") as f:
f.write(file_content)
return {
'file_name': file.filename,
'file_type': file.content_type,
}
多个文件的上传
@router.post("/multi/up_file/", response_description="Worker data added into the database")
async def multi_up_file(files: List[UploadFile] = File(...)):
results = []
for file in files:
content = await file.read() # 读取文件
print(content)
results.append({"filename": file.filename, "content_type": file.content_type})
return results
上面读写文件的方式通过异步方式完成,调用如下