我想在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中上传文件?
非常感谢!
答案 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的内置函数。
答案 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” } ]