Почтальон, Python и передача изображений и метаданных в веб-сервис - PullRequest
0 голосов
/ 10 июня 2018

это вопрос, состоящий из двух частей: я видел, как обсуждались отдельные части, но не могу получить рекомендованные предложения для совместной работы.Я хочу создать веб-сервис для хранения изображений и их метаданных, переданных от вызывающего абонента, и выполнить тестовый вызов из Postman, чтобы убедиться, что он работает.Таким образом, чтобы передать изображение (Drew16.jpg) в веб-сервис через Почтальон, мне нужно что-то вроде этого:

Postman Configuration

Для веб-сервисаУ меня есть некоторый код 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, но добавление изображения было ошибкой.Где я ошибаюсь в своем конфиге Postman?Каков фактический набор команд Python для чтения метаданных и файла из поста?ТИА

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Простите за почти сообщение в блоге.Я публикую это, потому что, хотя вы можете найти частичные ответы в разных местах, я нигде не сталкивался с полным постом, который бы сэкономил мне массу времени.Проблема в том, что вам нужны обе стороны истории, чтобы проверить либо.

Поэтому я хочу отправить запрос с помощью Postman в веб-сервис Python / Flask.У него должно быть изображение вместе с некоторыми метаданными.

Вот настройки для Почтальона (URL, Заголовки):

enter image description here

И тело:

enter image description here

Теперь перейдем к веб-сервису.Вот простой сервис, который примет запрос, распечатает метаданные и сохранит файл:

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)

Наслаждайтесь!

0 голосов
/ 11 июня 2018

Убедитесь, что в `request.files ['Image'] содержится изображение, которое вы отправляете, и следуйте инструкциям http://flask.pocoo.org/docs/1.0/patterns/fileuploads/, чтобы сохранить файл в вашей файловой системе.Что-то вроде

file = request.files['Image']
file.save('./test_image.jpg')

может делать то, что вы хотите, в то время как вам придется выяснить детали того, как файл должен быть назван и где он должен быть размещен.

...