简体   繁体   中英

Upload a file in Swagger and receive at Flask backend

I'm trying to upload a file using Swagger and Flask. I've the following configuration for swagger.

"/user/register/": {
    "post": {
        "tags": ["user"],
        "summary": "Register a new user",
        "description": "",
        "operationId": "registerUser",
        "consumes": ["application/json"],
        "produces": ["application/json"],
        "parameters": [{
            "in": "body",
            "name": "body",
            "description": "User object that needs to be added.",
            "required": true,
            "schema": {
                "$ref": "#/definitions/User"
            }
        },
        {
            "name": "file",
            "in": "path",
            "description": "file to upload",
            "required": true,
            "type": "file"
        }]
    }
},

I do get the option for uploading a file, but when I try to receive it at the backend,(using print request.files ) it returns me nothing.

How can I receive the file (selected at swagger level) at the backend.??

iFile = request.files.getlist('file')[0] - 该命令读取通过swagger UI上传的文件。

For file , the type should be formData instead of path . See below for an example

      {
        "name": "file",
        "in": "formData",
        "description": "file to upload",
        "required": false,
        "type": "file"
      }

ref: https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.json#L384

For consumes , it should be multipart/form-data

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM