Go 接收未知大小文件并转为对应大小的byte字节流

前言

场景是我的接口需要接收一个文件, 我需要把他转为 []byte 类型, 但是我不知道文件的大小, 用make创建的不能动态扩容, 导致如果我写死的话所有文件都会变成我写死的那个大小, 造成资源浪费

解决方案

// 接受文件
file, _, _ := ctx.FormFile("file_stream")
// 解析文件
fil := make([][]byte, 0)
var b int64 = 0
// 通过for循环写入
for {
	buffer := make([]byte, 1024)
	n, err := file.ReadAt(buffer, b)
	b = b + int64(n)
	fil = append(fil, buffer)
	if err != nil {
		fmt.Println(err.Error())
		break
	}
}
// 生成最后的文件字节流
fileStream := bytes.Join(fil, []byte(""))

你可能感兴趣的:(GoLang,Go语言学习笔记)