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

如何发起包含已打开文件的POST请求?解决字段必填报错问题

解决文件上传POST请求的必填字段错误

你的问题出在文件参数的传递方式上——你把文件对象嵌套进了payload里传给data参数,但requests处理文件上传时,需要单独用files参数来指定文件字段,而不是和普通表单字段混在一起。

错误原因分析

接口提示ExportedDataFile字段必填,是因为后端根本没接收到这个字段:当你把files放到data里时,requests会把它当成普通文本参数处理,而不是文件上传的multipart/form-data部分,自然识别不到。

修正后的代码

把文件字段单独放在files参数中,普通表单字段(比如Token)放在data参数里:

import requests

# 定义文件字段:键名要和接口要求的`ExportedDataFile`一致
files = {'ExportedDataFile': open('33332815-2019-04-191419.xml', 'rb')}
# 普通表单参数
payload = {'Token': 'test'}

# 发送请求:分别传入data和files参数
r = requests.post("http://????", data=payload, files=files)
print(r.text)

更安全的写法(推荐)

使用with语句自动管理文件资源,避免忘记关闭文件导致的资源泄漏:

import requests

payload = {'Token': 'test'}

# with块结束后会自动关闭文件
with open('33332815-2019-04-191419.xml', 'rb') as xml_file:
    files = {'ExportedDataFile': xml_file}
    r = requests.post("http://????", data=payload, files=files)
    print(r.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:04:21