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

Hyb*_*rid 1 python django post get python-requests

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试使用post第二个 API 时,我收到“不允许使用文件扩展名”。错误。file这显然是一个自定义错误消息,但它表示我正在执行的操作有问题post

关于我可能做错了什么有什么建议吗?

dir*_*ten 5

尝试指定文件类型,只是image_obj.content原始二进制图像:

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

这应该将正确的标题添加到图像的多部分边界。

如果您不确定内容类型,您实际上可能会从之前响应的标题中获取它:image_obj.headers['Content-Type']应该是“image/jpg”,但对于不同的图像,它可能是“image/png”。