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 多文件上传的步骤