我正在尝试设置一个通过 POST 方法接受图像的 Web 服务。我正在使用 Python Flask 和 Flask-Apispec 创建 Swagger 文档。因此,我包含了这个 Marshmallow Schema 来定义接受哪些参数:
class UploadRequestSchema(Schema):
image = fields.Raw(type="file")
我现在还想记录只接受 png 图像并在 Marshmallow 中验证这一点。
因此,我尝试设置验证器
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'>
所以value只是一个内容为“[object File]”的字符串,而kwargs是空的。如何访问提交的文件以检查其名称?或者,我可以通过什么其他方式验证 Marshmallow 中的文件上传?