- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我收到:错误:输入字节 4 处有非法 base64 数据
当将 Base64Image 传入 base64.StdEncoding.DecodeString(str)
时:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA...
如果您需要完整的 base64,请告诉我,我刚刚粘贴了第一部分,因为看起来问题在 4 个字节以内?
data, errBase := base64.StdEncoding.DecodeString(Base64Image)
if errBase != nil {
fmt.Println("error:", errBase)
return false
}
你知道为什么吗?
最佳答案
并非您尝试解码的所有输入字符串都是 Base64 编码形式。
你有一个 Data URI scheme ,它提供了一种将数据内联包含在网页中的方法,就好像它们是外部资源一样。
格式为:
data:[<MIME-type>][;charset=<encoding>][;base64],<data>
在你的情况下image/png
是 MIME 类型,缺少可选字符集,并且 ";base64"
是一个常量字符串,表示 <data>
使用 Base64 编码进行编码。
获取数据(即Base64编码形式),将前缀截去逗号(含逗号):
input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA"
b64data := input[strings.IndexByte(input, ',')+1:]
fmt.Println(b64data)
输出:
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA
现在你可以解码:
data, err := base64.StdEncoding.DecodeString(b64data)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(data)
输出:
[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]
在 Go Playground 上试试.
关于go - 使用 base64.StdEncoding.DecodeString(str) 时输入字节 4 处的非法 base64 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031589/
我是一名经验丰富的程序员,但还是个新手,所以提前为我确定是一个简单的问题表示歉意。 base64 example code goland.org 站点上包含以下代码。 package main imp
我想使用 Decode ( https://golang.org/pkg/encoding/base64/#Encoding.Decode ) 来解码一段字节,并且想知道,给定这个方法签名, func
我收到:错误:输入字节 4 处有非法 base64 数据 当将 Base64Image 传入 base64.StdEncoding.DecodeString(str) 时: data:image/pn
我是一名优秀的程序员,十分优秀!