如何使用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
相关产品推荐
相关产品推荐

