so ..我有一个base64编码的字符串,我需要解码,检查它的宽度和高度,然后保存到文件。但是..我一直在得到一个腐败的图像文件保存。Go - 将base64字符串保存到文件
package server
import (
"encoding/base64"
"errors"
"io"
"os"
"strings"
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
)
var (
ErrBucket = errors.New("Invalid bucket!")
ErrSize = errors.New("Invalid size!")
ErrInvalidImage = errors.New("Invalid image!")
)
func saveImageToDisk(fileNameBase, data, bucket string) (string, error) {
idx := strings.Index(data, ";base64,")
if idx < 0 {
return "", ErrInvalidImage
}
reader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(data[idx+8:]))
imgCfg, fmt, err := image.DecodeConfig(reader)
if err != nil {
return "", err
}
if imgCfg.Width != 750 || imgCfg.Height != 685 {
return "", ErrSize
}
fileName := fileNameBase + "." + fmt
f, err := os.Create(fileName)
if err != nil {
return "", err
}
_, err = io.Copy(f, reader)
f.Close()
return fileName, err
}
它确实保存一个文件..和我测试的base64是有效的,因为在线base64到图像转换器。任何帮助?
http://pastebin.com/u18eRv7d下面是我使用(在FUNC数据)
阅读时不读者是否“用尽”其内容? – Siguza