始终在第二个POST中清空多部分编码的文件

时间:2013-03-07 23:54:09

标签: python python-requests

我需要通过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)

可能是什么问题?

我认为文件对象在文件中的当前位置存在问题(可能,它在第一次响应后的文件末尾),但我不确定。

我无法正确搜索(0),追溯:http://pastebin.com/gnD2c1AR

感谢。

1 个答案:

答案 0 :(得分:1)

使用seek是正确的方法,但是您将此行中的{em>结果(将为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)