Как загрузить локальное изображение с помощью Python Requests в Cloudsight?
В настоящее время я пытаюсь отправить запрос POST в API распознавания изображений под названием CloudSight, используя запросы Python. Я получил его работать с URL-адресом изображения, но изо всех сил пытаюсь заставить его отправить локальный файл изображения. Мой код до сих пор:
import requests
LOCALE = 'en-US'
LANGUAGE = 'en-US'
URL = 'http://api.cloudsightapi.com/image_responses/'
header = {
'Authorization' : 'CloudSight meSNWQPE7LZ_ybXLMlDflA'
}
imageFile = {'file': ('cigarette.jpg', open('cigarette.jpg', 'rb'), 'image/jpg')}
def postRequest():
print("Here we go again...")
print(imageFile)
postData = {
'image_request[image]': imageFile,
#'image_request[remote_image_url]': 'https://www.google.co.uk/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png',
'image_request[locale]': LOCALE,
'image_request[language]': LANGUAGE
}
rPost = requests.post("https://api.cloudsightapi.com/image_requests", headers=header, data=postData)
print(rPost.status_code)
print(rPost.text)
Мне известно, что обычно Requests отправляет файлы, используя параметр "files" в самом запросе POST:
rPost = requests.post("https://api.cloudsightapi.com/image_requests", headers=header, data=postData, files=imageFile)
Тем не менее, я пробовал оба пути и каждый раз получаю ошибку: {"error":{"image":["at least one of image or remote_image_url must be set"]}
Я также знаю, что переменная определенно получает изображение правильно, как будто я печатаю содержимое переменной, которую она дает: {'file': ('cigarette.jpg', <_io.BufferedReader name='cigarette.jpg'>, 'image/jpg')
} Насколько я понимаю, API требует его отправки в параметре "image_request[image]" (в соответствии с их документами: https://cloudsight.readme.io/). Как правильно отправить файл изображения в CloudSight?
1 ответ
Вы пытались вызвать файл с ожидаемым именем?
imageFile = {'image_request[image]': ('cigarette.jpg', open('cigarette.jpg', 'rb'), 'image/jpg')}
rPost = requests.post("https://api.cloudsightapi.com/image_requests", headers=header, data=postData, files=imageFile)