我有一个像这样的验证器结构
type UploadFileFormValidator struct {
File []*multipart.FileHeader `form:"File" binding:"required,min=1"`
InputKey string `form:"Key" binding:"disallowed-char"`
Permission string `form:"Permission" binding:"disallowed-permission"`
}
并像下面一样使用它
func Bind(c *gin.Context, obj interface{}) error {
b := binding.Default(c.Request.Method, c.ContentType())
return c.ShouldBindWith(obj, b)
}
并像这样格式化我的错误
func NewValidatorError(err error) CommonError {
res := CommonError{}
res.Errors = make(map[string]interface{})
errs := err.(validator.ValidationErrors)
for _, v := range errs {
if v.Param() != "" {
res.Errors[v.Field()] = fmt.Sprintf("{%v: %v}", v.Tag(), v.Param())
} else {
res.Errors[v.Field()] = fmt.Sprintf("{key: %v}", v.Tag())
}
}
return res
}
但问题是当我上传文件InputKey
或Permission
字段时,我不会validator.ValidationErrors
按预期获得。
就像杜松子酒将这种情况视为其他类型的错误一样。
如何执行参数类型检查并仍然使用原始代码结构?