Python Как получить изображение и затем POST (через библиотеку запросов) - PullRequest
1 голос
/ 20 марта 2019

Я использую python, чтобы попробовать get изображение из одного API, а затем post его в отдельный API.

Пока у меня есть этот код:

def create_item(token, user_id):
    url = '<api_url_to_post_to>'
    headers = {"Authorization": "Token {0}".format(token)}

    image_url = '<some_random_image_url>'
    image_obj = requests.get(image_url)

    data = {
        "image": image_obj.content
    }

    r = requests.post(url, headers=headers, files=data)
    response = r.json()

    print(response)

    return response

Проблема в том, что когда я пытаюсь post передать его второму API, я получаю «Расширение файла» не разрешено ».ошибка.Это, очевидно, пользовательское сообщение об ошибке, но оно означает, что с file что-то не так. post ing.

Что-то не так?

Ответы [ 2 ]

4 голосов
/ 20 марта 2019

Попробуйте указать тип файла, просто image_obj.content - это необработанное двоичное изображение:

r = requests.post(
    url, 
    headers=headers, 
    files={'image': ('my_image.jpg', image_obj.content, 'image/jpg')})

Это должно добавить правильные заголовки к составной границе для изображения.

Если вы точно не знаете тип контента, вы можете получить его из заголовков вашего предыдущего ответа: image_obj.headers['Content-Type'] должно быть «image / jpg», но для другого изображения это может быть «image / png» ».

0 голосов
/ 20 марта 2019

Требуется расширение файла, я рискну предположить, что image должно быть image.<SOME_FORMAT>.

...