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