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

如何使用Python requests向FastAPI后端上传图片?解决422错误

解决FastAPI UploadFile端点422错误的文件上传问题

你的问题出在请求格式不匹配:FastAPI的UploadFile类型参数要求请求采用multipart/form-data格式提交文件,但你当前的requests脚本直接通过data参数传递文件对象,没有按表单字段包装,导致FastAPI无法识别file参数,触发422验证错误。

修正后的requests脚本

import requests

url = 'https://MYAPI.com/predict'
# 使用files参数按表单格式包装文件,键名必须和后端参数名"file"一致
with open('images/image.png', 'rb') as file:
    response = requests.post(url, files={'file': ('image.png', file, 'image/png')})

print(response)
print(response.json())

关键说明

  • files参数的字典键名必须和后端函数的参数名file完全匹配,FastAPI通过这个键名识别上传的文件
  • 字典值是三元组:(自定义文件名, 文件对象, MIME类型),MIME类型可省略,requests会自动推断,显式指定能提升兼容性

Insomnia上传配置

在Insomnia中创建POST请求时,需切换到Body标签页,选择Form Data类型,添加一个键为file的字段,然后选择本地图片文件上传,不要直接发送二进制文件。

前端正常的原因

前端对接时通常使用FormData对象包装文件,自动采用multipart/form-data格式提交,符合FastAPI的参数要求,所以能正常交互。

内容的提问来源于stack exchange,提问作者mcdominik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:40:45