我得到:错误: illegal base64 data at input byte 4
传入Base64Image时base64.StdEncoding.DecodeString(str):
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA...
Run Code Online (Sandbox Code Playgroud)
让我知道如果你需要完整的base64,我刚刚粘贴在第一部分,因为看起来问题是在4字节内?
data, errBase := base64.StdEncoding.DecodeString(Base64Image)
if errBase != nil {
fmt.Println("error:", errBase)
return false
}
Run Code Online (Sandbox Code Playgroud)
你知道为什么吗?
提前致谢
icz*_*cza 12
并非您尝试解码的所有输入字符串都是Base64编码形式.
您拥有的是一种数据URI方案,它提供了一种在网页中包含数据的方法,就像它们是外部资源一样.
它的格式为:
data:[<MIME-type>][;charset=<encoding>][;base64],<data>
Run Code Online (Sandbox Code Playgroud)
在您的情况下image/png,MIME类型,缺少可选的字符集,并且";base64"是一个常量字符串,表示<data>使用Base64编码进行编码.
要获取数据(即Base64编码形式),请将前缀剪切为逗号(包括逗号):
input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA"
b64data := input[strings.IndexByte(input, ',')+1:]
fmt.Println(b64data)
Run Code Online (Sandbox Code Playgroud)
输出:
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA
Run Code Online (Sandbox Code Playgroud)
你现在可以解码:
data, err := base64.StdEncoding.DecodeString(b64data)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(data)
Run Code Online (Sandbox Code Playgroud)
输出:
[137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 0 100 0 0 0 100 8 6 0]
Run Code Online (Sandbox Code Playgroud)
在Go Playground尝试一下.
| 归档时间: |
|
| 查看次数: |
22227 次 |
| 最近记录: |