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(""))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章