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。
关于我可能做错了什么有什么建议吗?
尝试指定文件类型,只是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”。