将base64请求主体编码为二进制文件

Ral*_*alf 4 go

我是Go语言的新手,很难实现以下目标:我收到一个base64字符串(基本上是一个编码图像),需要将它转换为服务器上的二进制形式.

func addOrUpdateUserBase64(w http.ResponseWriter, r *http.Request, params martini.Params) {
    c := appengine.NewContext(r)
    sDec, _ := b64.StdEncoding.DecodeString(r.Body)
...
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为DecodeString需要一个字符串......如何将request.Body转换为字符串?非常感谢任何提示!

Vol*_*ker 7

不要使用base64.StdEncoding.DecodeString,而是直接从中设置解码器r.Body

dec := base64.NewDecoder(base64.StdEncoding, r.Body)`  // dec is an io.Reader
Run Code Online (Sandbox Code Playgroud)

现在使用dec,例如转储到bytes.Buffer类似

buf := &bytes.Buffer{}
n, err := io.copy(buf, dec)
Run Code Online (Sandbox Code Playgroud)

它将解码r.Body为buf或直接复制到http.Response或文件.

如果记住所有内存都没问题,可以使用下面的Peter方法.