我对 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/

10-16 08:48