首页 > 后端开发 > Golang > 为什么`base64.StdEncoding.DecodeString()`返回'非法base64数据”?

为什么`base64.StdEncoding.DecodeString()`返回'非法base64数据”?

Susan Sarandon
发布: 2024-12-07 15:12:13
原创
262 人浏览过

Why Does `base64.StdEncoding.DecodeString()` Return

base64.StdEncoding.DecodeString() 中存在非法 Base64 数据

尝试使用 base64.StdEncoding.DecodeString 解码 Base64 编码的字符串时(str),您可能会遇到错误“输入字节处存在非法base64数据” 4.”当输入字符串未正确进行 Base64 编码时,通常会发生此错误。

请考虑以下代码:

data, errBase := base64.StdEncoding.DecodeString(Base64Image)
if errBase != nil {
    fmt.Println("error:", errBase)
    return false
}
登录后复制

在这种情况下,Base64Image 变量包含 Base64 编码的字符串。但是,如果输入字符串还包含非 Base64 编码的部分,例如 Data URI 方案前缀,则解码过程可能会在遇到第一个非 Base64 字符时失败。

数据 URI 方案通常以“data:”开头,后跟 MIME 类型,例如“image/png”,并且可能包含 ;base64 字符串。要从数据 URI 中提取实际的 Base64 编码数据,您需要删除逗号之前的前缀(包括逗号)。

input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA"

b64data := input[strings.IndexByte(input, ',')+1:]
fmt.Println(b64data)
登录后复制

提取纯 Base64 编码数据后,您然后可以使用 base64.StdEncoding.DecodeString() 对其进行解码。

data, err := base64.StdEncoding.DecodeString(b64data)
if err != nil {
    fmt.Println("error:", err)
}
fmt.Println(data)
登录后复制

通过隔离Base64编码的数据并正确解码,可以避免“非法base64数据”错误并成功处理所需的数据。

以上是为什么`base64.StdEncoding.DecodeString()`返回'非法base64数据”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板