如何上传文件in flask restful swagger

时间:2017-11-07 05:25:06

标签: python rest swagger flask-restful

我想在flask restful swagger api中上传一个json文件,这是我的参数

  parameters=[
      {
            "name": "filename",
            "description": "json file upload ",
            "required": True,
            "allowMultiple": False,
            "dataType": "file",
            "paramType": "body"
        }

我用

  

parser = reqparse.RequestParser()

     

parser.add_argument('filename',type = str,location ='args')

     

args = parser.parse_args()

     

打印(args.filename)

获取上传的文件名,我打印出来但是没有。

如何在flask restful swagger api中上传文件?

非常感谢!

2 个答案:

答案 0 :(得分:0)

有点晚了,但是...

您需要在swagger.yaml API规范文件中编辑端点定义,例如:

paths:
  '/your/api/upload':
    post:
      summary: Upload a file.
      operationId: postFile
      consumes:
        - multipart/form-data
      produces:
        - application/json
      parameters:
        - in: formData
          name: file # change it to your parameter name
          required: true
          type: file
          description: Stream to write to filesystem
        # other optional form parameters, e.g. ...
        - in: formData
          name: offset
          type: integer
          description: Bytes to skip at the beginning of the file

之后,您可以自动生成Python控制器,例如使用Swagger Editor的内置函数。

参考:Swagger 2.0 docs

答案 1 :(得分:-1)

我已经解决了这个问题,请写在这里:

更改

parser.add_argument('filename',type = str,location ='args')

parser.add_argument('filename',type = werkzeug.datastructures.FileStorage,location ='files')

但你需要先导入werkzeug

然后你可以使用werkzeug.datastructures.FileStorage类的方法

可以使用http://werkzeug.pocoo.org/docs/0.12/datastructures/

file = args.filename

filename = file.filename #upload file name

file.save(savePaths)#您可以将文件保存到要保存的路径                      #but记住savePaths包含文件的文件名

或者您可以使用以下方法保存文件:

lines = file.read()#timestes class

f = open(filename,“wb”)#new a file并给它文件名

f.write(lines)#write bytes

f.close()

现在: 参数= [             {                 “name”:“filename”,                 “description”:“dd”,                 “必需”:是的,                 “allowMultiple”:错误,                 “dataType”:'file',                 “paramType”:“body”             }         ]