我是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转换为字符串?非常感谢任何提示!
不要使用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方法.