【发布时间】:2019-10-04 01:49:52
【问题描述】:
我已经创建了 FLASK 网络服务来上传图像,但是当我尝试使用 POSTMAN 调用它时出现错误。
遇到错误
400 Bad Request: KeyError: 'file1'
但我确信我在两个地方都有相同的键名。
我的代码:
from flask import Flask, request
from scipy.stats import wasserstein_distance
import numpy as np
import cv2
from imutils import paths
from werkzeug.utils import secure_filename
app = Flask(__name__)
@app.route("/img", methods=['POST'])
def search():
file = request.files['file1']
filename = secure_filename(file.filename)
file.save(filename)
images = list(paths.list_images("data"))
query_image = cv2.imread(filename)
query_image = cv2.cvtColor(query_image, cv2.COLOR_BGR2GRAY)
q_hist = get_histogram(query_image)
hist = []
for i in images:
image = cv2.imread(i)
# convert the images to grayscale
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
s_hist = get_histogram(image)
dist = wasserstein_distance(q_hist, s_hist)
hist.append(dist)
x = min(hist)
print(hist)
if x > 2:
return "Image Not Found"
else:
idx = hist.index(x)
matched_img = images[idx]
return des[matched_img]
if __name__ == '__main__':
app.run(debug=True)
这就是我使用邮递员调用网络服务的方式
标题
我该如何解决这个问题?
【问题讨论】:
-
尝试添加 if request.method=='POST' 作为函数的第一行
-
只是为了确认。使用 curl.. curl -X POST -F file1=@"/path/to/my/file/a.jpg" localhost:5000/img
-
@TechatTheSparksFoundation Strange ...在这里得到回应。
-
是的,邮递员可能没有发送正确的请求。它附加临时标头来修改您的请求并停止处理它。一旦您将代码集成到前端,您的代码就会正常工作。 :)
-
感谢您的时间和努力 :-)