我对 Go 语言还很陌生,很难实现以下目标:我收到一个 base64 字符串(基本上是一个编码图像),需要在服务器上将其转换为二进制形式。
func addOrUpdateUserBase64(w http.ResponseWriter, r *http.Request, params martini.Params) {
c := appengine.NewContext(r)
sDec, _ := b64.StdEncoding.DecodeString(r.Body)
...
这是行不通的,因为 DecodeString 需要一个字符串......我如何将 request.Body 转换为一个字符串?非常感谢任何提示!
最佳答案
不要使用 base64.StdEncoding.DecodeString
,而是直接从 r.Body
设置解码器
dec := base64.NewDecoder(base64.StdEncoding, r.Body)` // dec is an io.Reader
现在使用
dec
,例如转储到 bytes.Buffer
之类的buf := &bytes.Buffer{}
n, err := io.copy(buf, dec)
这会将
r.Body
解码为 buf 或直接复制到 http.Response 或文件。或者如果将所有内容保存在内存中可以使用下面的 Peter 方法。
关于go - 将 base64 请求正文编码为二进制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23012782/