Как включить файл изображения в json?

В настоящее время я пытаюсь отправить запрос POST в мою службу покоя фляги, которая сгенерирует модель для сохранения в базе данных. Эта модель будет включать URL-адрес изображения, размещенного в облаке, а также другие данные, такие как дата и имя.

Моя проблема в том, что в Postman мне разрешено отправлять только form-data или raw, которые будут включать json. Я могу загрузить в облако и получить необходимый URL-адрес, однако я не могу получить json из запроса, поэтому я не могу полностью сгенерировать модель для сохранения.

image_json = request.get_json() возвращается None

Мой вопрос в том, разрешено ли мне отправлять только одно или одно raw or form-data Как я должен получить изображение и соответствующие данные, необходимые для сохранения модели?

from cloudinary.uploader import upload
from cloudinary.utils import cloudinary_url
from flask_restful import Resource
from flask import request
from models.image import ImageModel
from schemas.image import ImageSchema

image_schema = ImageSchema()
image_list_schema = ImageSchema(many=True)


class Image(Resource):
    @classmethod
    def post(cls):
        image_to_upload = request.files["image"]
        if image_to_upload:
            upload_result = upload(image_to_upload)
            url = cloudinary_url(upload_result['public_id'], format = "jpg", crop = "fill", width=100,height=100)[0]

            full_size_url = cloudinary_url(upload_result['public_id'], format = "jpg", crop = "fill", width=200, height=100, radius=20, effect = "sepia")[0]

            image_json = request.get_json() # this returns None
            image_json["url"] = url
            image_json["full_size_url"] = full_size_url
            image = image_schema.load(image_json)

            try:
                image.save_to_db()
            except:
                return {"message": "error uploading file"}
            return image_schema.dump(image), 201
        return {"message": "no image uploaded"}, 401
Новые приложения с использованием ChatGPT
Новые приложения с использованием ChatGPT
Я собираюсь вернуться к теме, которую уже освещал ранее, - чатгпт.
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Другой маршрут в Flask Python
Другой маршрут в Flask Python
Flask - это фреймворк, который поддерживает веб-приложения. В этой статье я покажу, как мы можем использовать @app .route в flask, чтобы иметь другую...
1
0
582
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы отправляете файл в flask с помощью multipart/form-data, файл будет находиться в request.files, поэтому в вашем случае это будет

image_json = request.files['here is the key you add to the file on postman']

Другие материалы, называемые данными формы, будут находиться в request.form. Итак, чтобы получить это:

form_data = request.form

Таким образом, используя postman, когда вы выбираете multipartm/form-data, вы сначала даете имя файлу, а затем выбираете его. Имя (или ключ) будет ключом, используемым в словаре для получения файла, как описано выше. Кроме того, для части формы ключ будет работать так же.

Другие вопросы по теме