0

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

谢谢。

4

1 回答 1

1

使用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)
于 2013-04-12T22:20:18.990 回答