在REST请求Python

时间:2015-12-20 15:08:06

标签: python rest

这是我目前用于将图像发送到API的内容:

import requests
response = requests.post("http://someAPI",
auth=(username, password),
files={'imgFile': open(filepath, 'rb')}
)

它适用于本地文件,但我也希望能够从URL发送图像。我知道如何通过保存文件,然后将其作为本地文件打开,将其发送到API然后将其删除来实现此目的。

有没有办法这样做而无需保存和删除文件?

1 个答案:

答案 0 :(得分:0)

您可以使用StringIO。 StringIO是文件兼容的对象,具有打开,搜索,读取,写入。因此,您可以将数据加载到该服务并从中提供服务,而无需将文件写入磁盘。我通常使用这个approch来创建CAPTCH。

import StringIO
import requests

# Imagine you read the image file in image as base64 encoded...
buff = StringIO.StringIO()
buff.write(image.decode('base64'))
buff.seek(0)
response = requests.post("http://someAPI",
auth=(username, password),
      files={'imgFile': buff}
     )