Postman、Python 以及将图像和元数据传递给 Web 服务
Posted
技术标签:
【中文标题】Postman、Python 以及将图像和元数据传递给 Web 服务【英文标题】:Postman, Python and passing images and metadata to a web service 【发布时间】:2018-11-19 14:57:50 【问题描述】:这是一个由两部分组成的问题:我看过讨论的个别部分,但似乎无法将推荐的建议一起工作。我想创建一个 Web 服务来存储从调用者传递的图像及其元数据,并从 Postman 运行测试调用以确保它正常工作。因此,要通过 Postman 将图像 (Drew16.jpg) 传递给 Web 服务,看来我需要这样的东西:
对于网络服务,我有一些 python/flask 代码来读取请求(我尝试过的许多变体之一):
from flask import Flask, jsonify, request, render_template
from flask_restful import Resource, Api, reqparse
...
def post(self, name):
request_data = request.get_json()
userId = request_data['UserId']
type = request_data['ImageType']
image = request.files['Image']
数据部分和直接 JSON 没有问题,但添加图像却是个麻烦事。我的邮递员配置哪里出错了?从帖子中读取元数据和文件的实际 Python 命令集是什么? TIA
【问题讨论】:
【参考方案1】:请原谅几乎是博客文章。我发布这个是因为虽然你可以在不同的地方找到部分答案,但我还没有在任何地方看到完整的帖子,这可以节省我大量的时间。问题是你需要故事的双方来验证。
所以我想使用 Postman 向 Python/Flask Web 服务发送请求。它必须有图像和一些元数据。
这里是 Postman 的设置(URL、标题):
和身体:
现在转到网络服务。这是一个简单的服务,它将接受请求、打印元数据并保存文件:
from flask import Flask, request
app = Flask(__name__)
# POST - just get the image and metadata
@app.route('/RequestImageWithMetadata', methods=['POST'])
def post():
request_data = request.form['some_text']
print(request_data)
imagefile = request.files.get('imagefile', '')
imagefile.save('D:/temp/test_image.jpg')
return "OK", 200
app.run(port=5000)
享受吧!
【讨论】:
非常有效的评论。谢谢你。 它显示 'NoneTyoe' 对象不可下标。【参考方案2】:确保 `request.files['Image'] 包含您要发送的图像,然后按照http://flask.pocoo.org/docs/1.0/patterns/fileuploads/ 将文件保存到您的文件系统。类似的东西
file = request.files['Image']
file.save('./test_image.jpg')
可能做你想做的事,但你必须弄清楚文件应该如何命名以及应该放在哪里的细节。
【讨论】:
以上是关于Postman、Python 以及将图像和元数据传递给 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
找不到 EntityType 错误的 EF 映射和元数据信息