【发布时间】:2020-12-06 10:35:21
【问题描述】:
我有以下 Flask API 服务器端代码:
def post(self):
data = parser.parse_args()
if not data['file']:
abort(404, message="No images found")
imagestr = data['file'].read()
if imagestr:
#convert string data to numpy array
npimg = np.frombuffer(imagestr, np.uint8)
# convert numpy array to image
img = cv2.imdecode(npimg, cv2.IMREAD_UNCHANGED)
客户端代码:
def detect(image):
endpoint = "http://127.0.0.1/getimage"
# imstring = base64.b64encode(cv2.imencode('.jpg', image)[1]).decode()
# img_str = cv2.imencode('.jpg', image)
# im = img_str.tostring()
# jpg_as_text = base64.b64encode(buffer)
# print(jpg_as_text)
data = cv2.imencode('.jpg', image)[1].tobytes()
files = {'file':data}
headers={"content-type":"image/jpg"}
response = requests.post(endpoint, files=files, headers=headers)
return response
对于 API,我能够通过 CURL 成功发送图像并获得响应。
curl -X POST -F file=@input.jpg http://127.0.0.1/getimage
但是,当我尝试使用客户端代码时,我无法发送图像。我看到服务器端没有收到文件:
{'file': None}
192.168.101.57 - - [17/Aug/2020 14:56:39] "POST /getimage HTTP/1.1" 404 -
我不确定我错过了什么。有人可以帮忙吗?
【问题讨论】:
-
在您的
curl中将其发送到端点/getimage但服务器日志显示/detect- 检查您实际上使用的是正确的端点 -
已更正。谢谢。
标签: python-3.x file-upload python-requests http-post flask-restful