Flask & Swagger: request.files пусто - PullRequest
       29

Flask & Swagger: request.files пусто

0 голосов
/ 27 августа 2018

Я пытаюсь загрузить файл из SwaggerUI и получить его на сервере Flask request.files пусто. Меня не волнует исходное имя файла.

Моя конфигурация Swagger:

parameters:
    - name: file
      in: formdata
      required: false
      type: file
    responses:
        '200':
            description: Firmware updated
            content:
                application/json:
                    schema:
                        $ref: '#/definitions/UpdateResponse'
    requestBody:
        content:
            multipart/form-data:
                schema:
                    type: string
                    format: binary
        description: log binary file

Мой файл app.py выглядит так:

app.add_url_rule(
    '/updates/update/',
    view_func=Update.as_view('updates_update'),
    methods=['POST']
)

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=5000

А реализация метода POST заключается в следующем:

class Update(MethodView):
    def post(self):
        """
        resets software and defaults
        ---
        tags:
            - system
        summary: resets software and defaults
        operationId: updateupdate
        description: resets defaults
        parameters:
        - name: file
          in: formdata
          required: false
          type: file
        responses:
            '200':
                description: Firmware updated
                content:
                    application/json:
                        schema:
                            $ref: '#/definitions/UpdateResponse'
        requestBody:
            content:
                multipart/form-data:
                    schema:
                        type: string
                        format: binary
            description: log binary file
        '400':
          description: 'update system not found'
        """
        data = {
            "id" : 0,
            "status" : "refused",
            "reason" : "battery_low"
        }
        print('Update Items')
        print('request.method', request.method)
        print('request.args', request.args)
        print('request.form', request.form)
        print('request.files', request.files)

Все отпечатки возвращают пустые списки. ==> Есть идеи, что происходит?

1 Ответ

0 голосов
/ 24 сентября 2018

Я думаю, что Flask возвращает пустой ответ в случае, когда в вашей форме загрузки не было задано имя.

Я не знаю, как изменить код в вашем случае, я знаю, что в чистом HTML вы должны изменить (это неправильный код) <input type="file"> на <input type="file" name="upfile"> - это вправо код.

...