我正在尝试通过 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 格式的图片。
我做错了什么?
你的 file_to_upload 变量可能应该是:
file_to_upload = [
('image': ('example.jpg', open('example.jpg', 'rb'), 'image/jepg'))
]
它应该是一个元组列表,对于每个元组,第一项是表单字段名称,第二项是包含文件名称、内容和内容类型的元组。在你的情况下,它只有一个文件。