0

我正在尝试设置一个通过 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 中的文件上传?

4

0 回答 0