Gin 框架 -七-: 文件上傳
1. 介紹
在Gin
框架中已經支持文件上傳,包括單文件上傳和多文件上傳。
2. 單文件上傳
在Gin
框架中可以通過FormFile("param")
來接收上傳的單個文件信息, 具體使用參考下面代碼:
2.1 代碼示例
//--- main.go ---------------
package main
import (
"github.com/gin-gonic/gin"
"go-use/practise"
)
func main() {
// 創建一個默認的路由引擎
engine := gin.Default()
// 註冊路由
practise.TestRecFile(engine)
_ = engine.Run()
}
//---file_receive.go-------
// 接收單個文件
func TestRecFile(engine *gin.Engine) {
// 設置內存限制爲8M, 默認是32MiB
engine.MaxMultipartMemory = 8 << 20
engine.POST("/file", func(context *gin.Context) {
file, err := context.FormFile("img")
if err != nil {
context.JSON(500, gin.H{"err": err})
return
}
// 文件重命名
dst := "./tmp/"+file.Filename
fmt.Println(dst)
// 保存圖片
err = context.SaveUploadedFile(file, dst)
if err != nil {
context.JSON(500, gin.H{"err": "文件保存失敗: " + err.Error()})
return
}
context.JSON(200, gin.H{
"msg": "success",
"name": file.Filename,
"size": file.Size,
})
})
}
2.2 請求返回
3. 多文件上傳
在Gin
框架中可以通過MultipartForm()
來接收上傳的多個文件信息, 具體使用參考下面代碼:
3. 1 代碼示例
//--- main.go ---------------
package main
import (
"github.com/gin-gonic/gin"
"go-use/practise"
)
func main() {
// 創建一個默認的路由引擎
engine := gin.Default()
// 註冊路由
practise.TestRecFiles(engine)
_ = engine.Run()
}
//---file_receive.go-------
// 接收多個文件
func TestRecFiles(engine *gin.Engine) {
// 設置內存限制爲8M, 默認是32MiB
engine.MaxMultipartMemory = 8 << 20
engine.POST("/files", func(context *gin.Context) {
// 接收圖片
form, _ := context.MultipartForm()
files := form.File["imgList[]"]
// 遍歷保存
for _, file := range files {
_ = context.SaveUploadedFile(file, "./tmp/"+file.Filename)
}
context.String(200,"保存成功!")
})
}
3. 2 請求返回
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/LWY0xRuSJZhsfNVPw0snhg