前言
場景是我的接口需要接收一個文件, 我需要把他轉爲 []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(""))