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

Python requests上传multipart文件到FastAPI返回400 body解析错误

问题原因
  • 手动设置了错误的Content-Type头:使用requests的files参数上传文件时,requests会自动生成符合规范的multipart/form-data请求头,包含随机生成的boundary分隔符。你手动指定的boundary和请求体实际使用的分隔符不一致,FastAPI无法正确拆分解析请求体,直接抛出解析错误。
  • 上传参数名和后端定义不匹配:后端接口定义的文件接收参数名为files,你本地代码传的参数名为file,后端匹配不到必填的文件参数,也会触发解析失败报错。
解决方案

删除手动设置的Content-Type请求头,将上传文件的参数名修改为和后端一致的files即可。

修正后的调用代码如下:

def upload_data(self, files_paths):
    url = 'http://localhost:8000/user/send/' + str(self.email)
    # 参数名和后端保持一致为files
    f = {"files": ("1.jpg", open('F:/PROJECT/scan2excel/input/1.jpg', "rb"), "image/jpeg")}
    # 若需要上传多个文件,可使用列表格式:
    # f = [
    #     ("files", ("1.jpg", open('F:/PROJECT/scan2excel/input/1.jpg', "rb"), "image/jpeg")),
    #     ("files", ("2.jpg", open('F:/PROJECT/scan2excel/input/2.jpg', "rb"), "image/jpeg"))
    # ]
    response = requests.post(url, files=f)
    # 调试可打印响应信息
    print(response.status_code, response.json())

额外建议:打开文件时尽量使用with上下文管理器,避免文件资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:36:01