【原】Gin框架上传文件

/ 0评 / 1

1,单文件上传,这里我写了一个HTML表单,用来上传文件。go代码如下,具体操作在注释里说的也很清楚。

package main
import "github.com/gin-gonic/gin"
/**
文件上传
*/
func main() {
   r := gin.Default()
   //限制表单你上传文件的大小(默认是32mb)
   //此处单位是B   10<<20 = 10*1024*1024B = 10M 是指10M
   r.MaxMultipartMemory = 10 << 20
   //定义文件上传路由
   r.POST("/uploadfile", func(c *gin.Context) {
      file,err:= c.FormFile("file")
      if err != nil {
         println(err)
      }
      //定义保存文件的路径,格式是 目录加文件名
      movepath := "./public/upload/"+file.Filename
      //上传文件到指定路径
      c.SaveUploadedFile(file,movepath)
      c.JSON(200,gin.H{
         "filename":file.Filename,
         "size":file.Size,
      })
   })
   //定义文件上传的HTML页面
   r.LoadHTMLFiles("./public/html/upload.html")
   r.GET("/upload.html", func(c *gin.Context) {
      c.HTML(200,"upload.html",gin.H{
      })
   })
   r.Run()
}

下面附上HTML的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/uploadfile" enctype="multipart/form-data" method="post">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>
</body>
</html>

启动项目后,用浏览器访问 http://127.0.0.1:8080/upload.html  如下图

选择一个文件上传后会跳转到如下界面

这里的size显示的是文件大小,单位是B,可以做自行处理显示的单位和格式,当前size大小 除以1024  就可以得出以kb为单位的文件大小,此处不做多操作。然后我们看项目的保存文件的路径/public/upload/下面的文件

可以看到正好多了一个test.txt,正是我们上传的文件2,多文件上传思路是差不多的,这里只展示核心代码。

//多文件上传
  r.POST("uplads", func(c *gin.Context) {
    form,_ := c.MultipartForm()
    files := form.File["upload[]"]
    for _,file := range files {
      //定义保存文件的路径,格式是 目录加文件名
      movepath := "./public/upload/" + file.Filename
      //保存文件
      c.SaveUploadedFile(file,movepath)
    }
    //返回处理的文件数量
    c.JSON(200, gin.H{
      "num":     len(files),
    })
  })

处理思路是遍历上传的文件数组,分别保存文件。

以上是使用Gin框架处理文件上传的步骤,在此分享。

如有转载请注明出处。

及时了解关于PHP和golang的一些技术文章请关注微信公众号:文艺的爱码士