如何验证字段.生在烧瓶棉花糖



我正在尝试建立一个通过POST方法接受图像的Web服务。我使用PythonFlask和Flask-Apispec来创建Swagger文档。因此,我包含了这个棉花糖模式来定义哪些参数是可以接受的:

class UploadRequestSchema(Schema):
image = fields.Raw(type="file")

我现在还想记录只有png图像被接受,并在棉花糖中验证这一点。

因此,我尝试设置一个验证器

class FileExtension(Validator)
def __call__(self, value, **kwargs):
print(value)
print(type(value))
for key in kwargs:
print(key)

//if filename ends in ".png"
return true
class UploadRequestSchema(Schema):
image = fields.Raw(type="file", validate=FileExtension())

然而,该代码的控制台输出只是

[object File]
<class 'str'>

因此只是一个字符串;[对象文件]";并且kwargs为空。如何访问提交的文件以检查其名称?或者,我可以用什么其他方式验证棉花糖中的文件上传?

value应该是Werkzueg的FileStorage对象的实例,您可以根据其filenamemimetype属性进行验证。

from marshmallow import ValidationError

class FileExtension(Validator)
def __call__(self, value, **kwargs):
if not value.filename.endswith('.png'):
raise ValidationError('PNG only!')
return true

最新更新