我用Python创建了一个api - Flask。 api将接受图像,宽度和高度。目前我正在运行api作为localhost而没有任何麻烦。
curl --header "Content-Type: application/json" --request POST --data '{"PATH":"/home/mycomp/automatch/127261861.jpg","WIDTH":16.5,"HEIGHT":20.5}' http://127.0.0.1:5000/images
这个获取路径中指定的文件以及宽度和高度。但是,我想使用文件上传选项将图像发送到在不同服务器上运行的相同api ....我尝试了以下内容:
curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --form file=@"/home/mycomp/automatch/127261861.jpg" --data '{"WIDTH":16.5, "HEIGHT":20.5}' http://127.0.0.1:5000/images
这个给我一个错误Warning: you can select only one HTTP request
。
我读了SO并使用了以下代码:
curl -i -X POST -H "Content-Type: multipart/mixed" -F "file=@/home/mycomp/automatch/127261861.jpg" -F "data={\"WIDTH\":16.5,\"HEIGHT\":20.5,};type=application/json" http://127.0.0.1:5000/images
以上显示以下错误:
HTTP/1.1 100 Continue
HTTP/1.0 405 METHOD NOT ALLOWED
Content-Type: text/html
Allow: HEAD, OPTIONS, GET
Content-Length: 178
Server: Werkzeug/0.12.2 Python/2.7.6
Date: Wed, 06 Jun 2018 08:55:23 GMT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>
我尝试了另一个版本:
curl -X POST http://127.0.0.1:5000/lastoneweek -F file=@/home/mycomp/automatch/127261861.jpg --data '{\"WIDTH\":16.5,\"HEIGHT\":20.5};type=application/json'
错误Warning: you can select only one HTTP request
。
我知道有很多类似于这个的问题,我尝试了太多的问题,而且似乎都没有。收到数据后,api的工作原理如下:
def get():
data=request.get_json()
file=request.files['file']
if 'file' not in request.files:
return jsonify({'message': 'No file found!'})
l = data['WIDTH']-0.25
m = data['WIDTH']-0.25
p = data['HEIGHT']-0.25
q = data['HEIGHT']-0.25
cur = mysql.connect().cursor()
cur.execute("select * from images where WIDTH between %s and %s and HEIGHT between %s and %s;",(l,m,p,q))
image=cv2.imread(file)
所需的操作是将图像文件作为图像发送到api,其宽度和高度为json。