用于发布数据和图像的FlaskAPI
我有点困惑。我想创建可以发布图像的API,以及一个与该图像一起发布的字典。我怎么做?对于一个图像,我可以这样做。如果我想发布另一个不是文件的变量,比如variablemeta_data,该怎么办用于发布数据和图像的FlaskAPI,api,flask,post,Api,Flask,Post,我有点困惑。我想创建可以发布图像的API,以及一个与该图像一起发布的字典。我怎么做?对于一个图像,我可以这样做。如果我想发布另一个不是文件的变量,比如variablemeta_data,该怎么办 url = 'http://127.0.0.1:5000/im_size' my_img = {'image': open('test.jpg', 'rb')} r = requests.post(url, files=my_img) 在我的API脚本中应该做什么更改 from flask impor
url = 'http://127.0.0.1:5000/im_size'
my_img = {'image': open('test.jpg', 'rb')}
r = requests.post(url, files=my_img)
在我的API脚本中应该做什么更改
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/im_size", methods=["POST"])
def process_image():
file = request.files['image']
# Read the image via file.stream
img = Image.open(file.stream)
return jsonify({'msg': 'success', 'size': [img.width, img.height]})
if __name__ == "__main__":
app.run(debug=True)
requests.post
,为该数据设置正确的内容类型('application/json'
),然后通过request.get_json()
方法访问该数据
但是,当您同时提供文件
参数时,就会出现这种情况,该参数将内容类型设置为“多部分/表单数据”
在我的帮助下,我发现解决方案是将JSON数据作为多部分表单的一部分发送
因此,在客户端定义一个字典,并将其添加到my\u img
dict中,如下所示:
import json
meta_data = {'message':'I am a picture', 'another_message':'About to upload'}
my_img = {'image': open('test.jpg', 'rb'),
'json_data': ('j', json.dumps(meta_data), 'application/json')}
然后,在服务器端,您还需要导入json,并且在process_image
查看功能中,您可以通过以下方式访问该数据:
json_data = request.files['json_data']
meta_data = json.load(json_data)
print (meta_data)
print (json_data.filename)
服务器输出:
{'message': 'I am a picture', 'another_message': 'About to upload'}
j