如何使用 Go 从数据 URI 中删除 base64 header?
How can I remove the base64 header from a data URI with Go?
我想从 base64 数据 URI 中删除 base64 header,例如:
data:video/mp4;base64,TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
我要删除前缀:
data:video/mp4;base64,
问题是我收到了不同类型的视频,所以我不知道如何可靠地删除这个 header 以任何形式出现的视频。有人可以帮忙吗?
Cut逗号处的字符串获取base64数据:
func decode(uri string) ([]byte, error) {
if !strings.HasPrefix(uri, "data:") {
return nil, errors.New("not a data uri")
}
_, data, ok := strings.Cut(uri, ",")
if !ok {
return nil, errors.New("not a data uri")
}
return base64.URLEncoding.DecodeString(data)
}
在早期版本的 Go 中,strings.Cut function was added in Go 1.18. Use strings.Index 要在逗号上剪切:
func decode(uri string) ([]byte, error) {
if !strings.HasPrefix(uri, "data:") {
return nil, errors.New("not a data uri")
}
i := strings.Index(uri, ",")
if i < 0 {
return nil, errors.New("not a data uri")
}
return base64.URLEncoding.DecodeString(uri[i+1:])
}
我想从 base64 数据 URI 中删除 base64 header,例如:
data:video/mp4;base64,TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
我要删除前缀:
data:video/mp4;base64,
问题是我收到了不同类型的视频,所以我不知道如何可靠地删除这个 header 以任何形式出现的视频。有人可以帮忙吗?
Cut逗号处的字符串获取base64数据:
func decode(uri string) ([]byte, error) {
if !strings.HasPrefix(uri, "data:") {
return nil, errors.New("not a data uri")
}
_, data, ok := strings.Cut(uri, ",")
if !ok {
return nil, errors.New("not a data uri")
}
return base64.URLEncoding.DecodeString(data)
}
在早期版本的 Go 中,strings.Cut function was added in Go 1.18. Use strings.Index 要在逗号上剪切:
func decode(uri string) ([]byte, error) {
if !strings.HasPrefix(uri, "data:") {
return nil, errors.New("not a data uri")
}
i := strings.Index(uri, ",")
if i < 0 {
return nil, errors.New("not a data uri")
}
return base64.URLEncoding.DecodeString(uri[i+1:])
}