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

如何在urllib3的POST请求中向Rails服务器发送列表字段?

解决Rails服务器表单列表参数的提交问题

你遇到的核心问题是Rails对表单列表参数的解析规则:它需要接收多个以[]结尾的同名参数(比如from[]=a、from[]=b),但urllib3的fields参数用字典时无法定义重复键,这时改用列表形式的字段集合就能解决。

修改后的代码

import urllib3
import json

http = urllib3.PoolManager()
file_path = 'file.png'
with open(file_path, 'rb') as fp:
  file_data = fp.read()

# 用列表替代字典,每个元素是(字段名, 值)的元组,支持重复字段名
payload = [
    ('from[]', 'a'),
    ('from[]', 'b'),
    ('from[]', 'c'),
    ('file', ('file.png', file_data)),
]

r = http.request(
    'POST',
    'http://httpbin.org/post',
    fields=payload
)

print(json.loads(r.data.decode('utf-8')))

原理说明

urllib3的request方法中,fields参数不仅支持字典,还支持列表格式的元组集合。每个元组对应一个独立的表单字段,这样就能重复定义相同的字段名(比如from[]),完全匹配Rails服务器对列表参数的解析逻辑。

提交后,Rails会自动把所有from[]参数收集为一个列表['a', 'b', 'c'],同时也能正常接收上传的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:47:04