from flask_smorestfields import Uploadclass UploadArgSchemaArgSchema file = Upload description=待上传文件 required=True error_messages=required 待上传文件不能为空 如果fule字段有三个选择1和2都是上传前端默认图片如果是3的话就上传客户端
您可以通过以下方式来实现:
- 定义一个新的字段,命名为
image_type,用于表示图片类型(1、2或3)。 - 在
UploadArgSchema中添加image_type字段,并设置为必填字段。 - 在
UploadArgSchema中添加一个自定义验证器,确保image_type字段只能选择1、2或3。 - 根据
image_type的值,决定是使用默认图片还是上传客户端文件夹中的图片。
下面是修改后的代码示例:
from flask_smorest.fields import Upload
from marshmallow import validate
class UploadArgSchema(ArgSchema):
file = Upload(
description='待上传文件', required=True, error_messages={'required': '待上传文件不能为空'}
)
image_type = fields.Integer(
description='图片类型(1、2或3)', required=True,
validate=validate.OneOf([1, 2, 3]), error_messages={'required': '图片类型不能为空'}
)
@post_load
def process_image(self, data, **kwargs):
image_type = data.get('image_type')
file = data.get('file')
if image_type == 1:
# 使用默认图片1
save_image(file, 'default_image1.jpg')
elif image_type == 2:
# 使用默认图片2
save_image(file, 'default_image2.jpg')
elif image_type == 3:
# 上传客户端文件夹中的图片
save_image(file, 'client_folder_image.jpg')
return data
def save_image(file, filename):
# 在这里实现保存图片的逻辑
pass
在上面的代码中,我们添加了一个image_type字段来表示图片类型,使用validate.OneOf([1, 2, 3])验证器确保只能选择1、2或3。在process_image方法中,根据image_type的值来决定保存的图片文件名,然后调用save_image函数保存图片。
请注意,save_image函数是一个示例,您需要根据实际需求来实现该函数,以保存图片到指定的位置
原文地址: https://www.cveoy.top/t/topic/ihtW 著作权归作者所有。请勿转载和采集!