[英]How to upload file in flask restful swagger
我想在烧瓶restful swagger api中上传一个json文件,这是我的参数
parameters=[
{
"name": "filename",
"description": "json file upload ",
"required": True,
"allowMultiple": False,
"dataType": "file",
"paramType": "body"
}
我用
解析器= reqparse.RequestParser()
parser.add_argument('filename',type = str,location ='args')
args = parser.parse_args()
打印(args.filename)
要获取上传的文件名,我将其打印出来,但是没有。
如何在Flask Restful摇摇API中上传文件?
非常感谢!
有点晚了,但是...
您需要在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文档
我已经解决了这个问题,在这里写:
更改
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/使用它
文件= args.filename
filename = file.filename#上传文件名
file.save(savePaths)#您可以将文件保存到要保存的路径#但请记住savePaths包含文件的文件名
或者,您可以使用以下方法保存文件:
行数= file.read()#bytes类
f = open(filename,“ wb”)#新建一个文件并为其提供文件名
f.write(lines)#write字节
f.close()
现在:parameters = [{“ name”:“ filename”,“ description”:“ dd”,“ required”:True,“ allowMultiple”:False,“ dataType”:'file',“ paramType”:“ body” }]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.