//读取文件 fileHeader 类型,open后成为 File 类型
//icon 为File类型
if icon, err := fileHeader.Open(); err != nil {
return
} else {
fmt.Println("读取正确")
// defer icon.Close()
//获得[]bytes
image_content, __ := ioutil.ReadAll(icon)
icon.Close()
//新建缓冲
buf := bytes.NewBuffer(image_content)
var base64Encoding string
// 判断文件类型,生成一个前缀,拼接base64后可以直接粘贴到浏览器打开,不需要可以不用下面代码
//取图片类型
mimeType := http.DetectContentType(image_content)
switch mimeType {
case "image/jpeg":
base64Encoding = "data:image/jpeg;base64," + base64Encoding
case "image/png":
base64Encoding = "data:image/png;base64," + base64Encoding
}
base64Encoding += base64.StdEncoding.EncodeToString(buf.Bytes())//生成base64,使用图片base64解码,就可以查看到原图,开始我不懂,直接用base64解码,结果尴尬了
fileHandle, err1 := os.OpenFile("image.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666);if err1 != nil {
log.Println("open file err1or :", err1)
return
}
// NewWriter 默认缓冲区大小是 4096
// 需要使用自定义缓冲区的writer 使用 NewWriterSize()方法
buf1 := bufio.NewWriterSize(fileHandle, len(base64Encoding))
buf1.WriteString(base64Encoding)
buf1.Flush()
fileHandle.Close()
}
参考:https://freshman.tech/snippets/go/image-to-base64/