我需要发送带有重复数据的请求。因为我听说我不能发送重复项,因为请求使用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中手动添加?
答案 0 :(得分:1)
从requests
1.1.0开始,您可以使用元组列表而不是dict作为files
参数传递。每个元组中的第一个元素是多部分表单的名称,可以是内容,也可以是包含文件名,内容和(可选)内容类型的其他元组,因此在您的情况下:
files = [('file[]', ("", "", "application/octet-stream")),
('file[]', ('qwe.txt', open('qwe.txt','rb'), 'text/plain'))]
requests.post(url, files=files)
应该产生你描述的结果。