使用curl时API可以工作,但使用requests.post时返回400错误

问题描述 投票:0回答:1

我正在尝试通过 Docker 使用 API 来通过 MAX-Image-Caption-Generator-Model 预测图像的字幕。使用curl命令时

curl -F "image[email protected]" -X POST http://localhost:8090/model/predict

它工作得很好,但是当我尝试使用 requests 模块从 python 脚本中执行相同操作时,我收到了 400 文本错误

{"errors": {"image": "图片文件上传的文件中缺少必需的参数"}, "message": "输入负载验证失败"}

这是我的代码:

import requests

data = open('example.jpg', 'rb')
response = requests.post('http://localhost:8090/model/predict', data=data)

print(response.status_code, response.reason, response.text)

我也尝试过


import requests

files = {
    'image': open('example.jpg', 'rb')
}

response = requests.post('http://localhost:8090/model/predict', files=files)

print(response.status_code, response.reason, response.text)

但出现错误

文件类型/扩展名无效。请提供 JPEG 或 PNG 格式的图片。

我做错了什么?

docker curl post python-requests
1个回答
0
投票

你的 file_to_upload 变量可能应该是:

file_to_upload = [
    ('image': ('example.jpg', open('example.jpg', 'rb'), 'image/jepg'))
]

它应该是一个元组列表,对于每个元组,第一项是表单字段名称,第二项是包含文件名称、内容和内容类型的元组。在你的情况下,它只有一个文件。

© www.soinside.com 2019 - 2024. All rights reserved.