我正在尝试建立一个通过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对象的实例,您可以根据其filename
或mimetype
属性进行验证。
from marshmallow import ValidationError
class FileExtension(Validator)
def __call__(self, value, **kwargs):
if not value.filename.endswith('.png'):
raise ValidationError('PNG only!')
return true