Как объединить send_file () с другой информацией (например, int) в 1 ответе с помощью Flask - PullRequest
0 голосов
/ 01 октября 2019

Моя проблема в том, что я пытаюсь отправить клиенту и изображение с другой дополнительной информацией, используя Python с Flask.

Я пытался использовать send_file (), но проблема в том, что я могу только отправить изображение толькои я не могу найти другие способы отправить дополнительную информацию с ним. Я также пытался объединить изображение и информацию в JSON, но кажется, что send_file () не может быть сериализован как JSON

def post(self):
    img_path, score = self.get_result()
    final_image = send_file(
        img_path,
        mimetype='image/jpg'
    )
    output = {'img': final_image, 'score': score}
    return output

Есть ли способ получить изображение с дополнительными результатами в течение 1запрос от клиента?

1 Ответ

2 голосов
/ 01 октября 2019

Можно рассмотреть один из следующих подходов:

  • Установить дополнительную информацию в качестве cookie.
response = send_file(
                img_path,
                mimetype='image/jpg'
           )
response.set_cookies('score', score)
  • Установить дополнительные заголовки ответа, чтобы они содержали дополнительную информацию.
response = send_file(
                img_path,
                mimetype='image/jpg'
           )
response.set_header('x-myapp-score', score)
from base64 import b64encode
import logging

logger = logging.getLogger(__name__)

def post(self):
    # ...
    output = {
       'score': score
    }
    try:
        with open(final_image, 'rb') as f:
            content = f.read()
            output['img'] = b64encode(content)
    except TypeError, FileNotFoundError:
           # handle default image ¯\_(ツ)_/¯
           logger.exception('Failed to encode image file')
    return output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...