FastAPI多图片上传报List未定义错误及Postman测试方法咨询
错误解决方案
错误原因:List是Python类型注解体系中的泛型类型,未提前导入就直接使用会触发名称未定义报错。此外你提供的代码片段还存在函数体缩进错误的问题,for循环部分要缩进进analyze函数内部,否则也会触发语法错误。
解决方案如下:
- 先在代码头部补充必要的导入声明,以下是完整的代码参考:
from fastapi import FastAPI, File, UploadFile # 导入List类型注解,Python3.9及以上版本也可以直接用内置list无需导入 from typing import List import numpy as np import cv2 app = FastAPI() # 你自己定义的resize_image函数要保证已经提前实现 def resize_image(img): # 此处为示例缩放逻辑,可替换为你自己的实现 return cv2.resize(img, (640, 640)) @app.post("/analyze") async def analyze(files: List[UploadFile] = File(...)): # 注意缩进要在函数体内部 for img in files: contents = await img.read() nparr = np.fromstring(contents, np.uint8) img1 = cv2.imdecode(nparr, cv2.IMREAD_COLOR) print(img1.shape) img1 = resize_image(img1) print(img1.shape) return {"status": "success", "upload_count": len(files)}
如果你使用的是Python3.9及以上版本,也可以不用导入typing.List,直接把参数注解改成files: list[UploadFile] = File(...)即可。
Postman测试上传操作步骤
- 新建POST请求,请求地址填写FastAPI服务的访问地址+接口路径,默认本地启动的话是
http://127.0.0.1:8000/analyze - 切换到请求配置的
Body标签,勾选form-data格式 - 在Key列填写参数名
files,鼠标移动到Key输入框的末尾位置,点击弹出的下拉菜单,把默认的Text类型切换为File类型 - 点击Value列的「Select Files」按钮,可多选要上传的图片文件
- 点击Send按钮即可发起请求,查看接口返回结果
内容的提问来源于stack exchange,提问作者YamanSinghal
相关产品推荐
相关产品推荐

