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

requests库POST多文件表单数据处理问题及官方文档问询

关于requests库POST多文件的官方文档参考及问题解决

你遇到的问题源于requests库对多文件上传的列表格式处理逻辑,官方文档中明确了两种正确的多文件提交方式:

1. 同一字段名提交多个文件(符合HTTP多文件上传规范)

若接口期望通过同一个字段名接收多个文件,官方推荐使用字典+列表的结构,而非重复键的列表结构。示例代码如下:

import requests
url = "https://endpoint.com/api/upload"
payload = {}
files = {
    'images': [
        ('image01.png', open('H:/image01.png', 'rb'), 'image/png'),
        ('image02.png', open('H:/image02.png', 'rb'), 'image/png')
    ]
}
headers = {}
response = requests.post(url, files=files)
print(response.text)

这种写法会让所有文件以images字段名提交,不会出现覆盖问题,接口能正确接收全部文件。

你最初使用的[('images', ...), ('images', ...)]列表结构,requests内部转换为字典时会覆盖重复的键,最终只保留最后一个文件,这就是接口仅收到1个文件的原因。

2. 不同字段名提交多个文件

若接口要求每个文件对应独立的字段名,你采用的修改方式符合官方规范,也可以用字典结构实现:

files = {
    'images01': ('image01.png', open('H:/image01.png', 'rb'), 'image/png'),
    'images02': ('image02.png', open('H:/image02.png', 'rb'), 'image/png')
}

官方文档明确说明了这两种多文件上传的用法,需根据接口的接收要求选择对应方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:52:16