优秀的编程知识分享平台

网站首页 > 技术文章 正文

Go Web 框架 Gin 多文件上传的步骤

nanyue 2024-07-29 01:10:04 技术文章 5 ℃

Go Web 框架 Gin 多文件上传的步骤

1、设置input的属性

<input class="form-control-file" type="file" name="file" multiple>

2、解析的multipart表单,包括文件上传

form, err := c.MultipartForm()

func (c *Context) MultipartForm() (*multipart.Form, error)

3、迭代出每个文件信息

for _, file := range form.File["file"]

4、保存每个文件

_ = c.SaveUploadedFile(file, newFile)

func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string) error

file: form.File["file"]迭代出的每个文件*multipart.FileHeader

dst :保存的目标路径

package main

import (
   "fmt"
   "github.com/gin-gonic/gin"
   "net/http"
   "time"
)

func main() {
   app := gin.Default()
   app.Static("/asset", "./asset")
   app.LoadHTMLGlob("./html/*")
   app.GET("/", index)
   app.POST("/", indexPost)
   _ = app.Run("127.0.0.1:80")
}

func index(c *gin.Context) {
   c.HTML(http.StatusOK, "index.html", nil)
}
func indexPost(c *gin.Context) {
   form, err := c.MultipartForm()
   if err != nil {
      return
   }
   for _, file := range form.File["file"] {
      newFile := fmt.Sprintf(
         "upload/%s%s%s",
         time.Now().Format("2006-01-02-15-04-05"),
         "-",
         file.Filename,
      )
      fmt.Println(newFile)
      _ = c.SaveUploadedFile(file, newFile)
   }
   _, _ = c.Writer.Write([]byte("上传成功"))
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/asset/css/bootstrap.css">
    <script src="/asset/js/jquery-3.6.0.js"></script>
    <script src="/asset/js/bootstrap.js"></script>
</head>
<body class="container" style="margin-top: 30px">
<form action="/" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <p><input class="form-control-file" type="file" name="file" multiple></p>
    </div>
    <div class="form-group">
        <p><input class="form-control" type="submit"></p>
    </div>
</form>
</body>
</html>

Go Web 框架 Gin 多文件上传的步骤

最近发表
标签列表