0

我需要发送数据重复的请求。正如我听说的那样,我无法发送重复项,因为请求使用 dict 并且我无法在 dict 中获取重复项。

我需要得到什么(从提琴手嗅探日志)

------WebKitFormBoundaryJm0Evrx7PZJnQkNw
Content-Disposition: form-data; name="file[]"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryJm0Evrx7PZJnQkNw
Content-Disposition: form-data; name="file[]"; filename="qwe.txt"
Content-Type: text/plain

example content of file qwe.txt blablabla

我的脚本:

requests.post(url, files={'file[]': open('qwe.txt','rb'), 'file[]':''})

=> 只得到了这个(来自 Fiddler 的日志)。一个文件[] 消失。

--a7fbfa6d52fc4ddd8b82ec8f7055c88b
Content-Disposition: form-data; name="file[]"; filename="qwe.txt"

example content of file qwe.txt blablabla

我试过了:

requests.post(url, data={"file[]":""},files={'file[]': open('qwe.txt','rb')})

但它没有:filename="" 和 content-type

--a7fbfa6d52fc4ddd8b82ec8f7055c88b
Content-Disposition: form-data; name="file[]"

--a7fbfa6d52fc4ddd8b82ec8f7055c88b
Content-Disposition: form-data; name="file[]"; filename="qwe.txt"
Content-Type: text/plain

example content of file qwe.txt blablabla

有什么方法可以在 python-requests 中手动添加它?

4

1 回答 1

1

requests1.1.0 开始,您可以使用元组列表而不是 dict 作为files参数传递。每个元组中的第一个元素是多部分表单字段的名称,后面可以是内容,也可以是另一个包含文件名、内容和(可选)内容类型的元组,所以在你的情况下:

files = [('file[]', ("", "", "application/octet-stream")),
         ('file[]', ('qwe.txt', open('qwe.txt','rb'), 'text/plain'))]
requests.post(url, files=files)

应该产生你描述的结果。

于 2013-10-27T18:01:07.183 回答