去 Gin : Validating base64

标签 go go-gin

我正在尝试使用 Gin 将 Base64 图像发送到用 Go 编写的服务器。我创建了一个带有绑定(bind)和 json 标签的结构来表示请求正文,如下所示:

type createCompanyRequestBody struct {
    Name string `json:"name" binding:"required"`
    Size string `json:"size" binding:"required"`
    Logo string `json:"logo" binding:"required,base64|base64url|base64rawurl"`
}

当尝试使用 Gin 的 ShouldBindJSON 解码正文时,我收到 Logo 字段的错误。不过,我确实使用在线工具 ( https://onlinepngtools.com/convert-base64-to-png ) 验证了解码后的对象确实在 Logo 字段中包含有效的 base64 字符串。

解码JSON的代码如下:

var body createCompanyRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
    ctx.Status(http.StatusBadRequest) // Will always hit this
}

我以前没有用过 Gin ,所以我确信我有疏忽,但我似乎不明白是什么。如何更改结构以允许按预期提供的 base64 变体?

最佳答案

如果您将图像作为 data URI 发送而不仅仅是一个裸露 base64 字符串,那么您应该使用 datauri验证器而不是 base64|base64URL|base64RawURL

关于去 Gin : Validating base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76858411/

相关文章:

go - channel 未检测到 SIGCONT

html - 解析Go中一起属于的表单输入

go - 如果我在 gin 中使用多个中间件,它们的执行顺序是什么

go - 如果连接丢失,golang gin 停止处理程序如何立即运行

go - nginx 502 错误始终存在,没有应用程序错误

mongodb - 使用 mgo 将数据插入 MongoDB

google-app-engine - 如何在 App Engine/Heroku 中以 worker 身份运行非 Web Go 应用程序

Golang Gin-Gonic 将路由拆分成多个文件

go - 在 Golang 中使用 Gin 获取反向代理与 TLS(到代理服务器)一起工作时遇到问题

go - 使用redis作为缓存,TTL和Mysql中每个表的字节大小限制