Python如何获取图像然后发布(通过请求库)

时间:2019-03-20 16:41:01

标签: python django post get python-requests

我正在使用python尝试从一个API get镜像,然后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出了问题。

对我可能做错的任何建议吗?

2 个答案:

答案 0 :(得分:4)

尝试指定文件类型,仅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”。

答案 1 :(得分:0)

它需要文件扩展名,我可能会猜测image应该是image.<SOME_FORMAT>