You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI多图片上传报List未定义错误及Postman测试方法咨询

错误解决方案

错误原因:List是Python类型注解体系中的泛型类型,未提前导入就直接使用会触发名称未定义报错。此外你提供的代码片段还存在函数体缩进错误的问题,for循环部分要缩进进analyze函数内部,否则也会触发语法错误。
解决方案如下:

  1. 先在代码头部补充必要的导入声明,以下是完整的代码参考:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:54:04