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
相关产品推荐
相关产品推荐

