第二个POST请求中的多部分编码文件总是为空
我需要通过POST请求在两个不同的网站上发送一个文件。所以,我使用了Requests库。
在第二个响应中,照片的大小总是为零。即使我改变网站的顺序也是如此。
import requests
data = {'id': 1}
f = open('/tmp/photo7.jpg', 'rb')
image = {'image': ('photo7.jpg', f)}
# works fine
requests.post('http://site.com/', data=data, files=image)
# empty file
requests.post('http://othersite.com/', data=data, files=image)
这可能是什么问题呢?
我觉得问题可能出在文件对象当前的位置(可能在第一次响应后,它的位置在文件的末尾),但我不太确定。
我无法正确使用seek(0),错误信息在这里:http://pastebin.com/gnD2c1AR
谢谢。
1 个回答
2
使用seek
是正确的做法,但在这一行中,你把seek的结果(这个结果会是0)传给了requests.post
,而不是传文件句柄。
files = {'image': ('photo7.jpg', f.seek(0))}
试试这个:
...
requests.post('http://site.com/', data=data, files=image)
f.seek(0)
requests.post('http://othersite.com/', data=data, files=image)