专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

gin系列-文件上传

单文件上传

前端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="/upload" method="post"  enctype="multipart/form-data">  //upload跳转控制
    <input type="file" name="f1">   //和c.FormFile一致
    <input type="submit" value="上传">
</form>
</body>
</html>

后端

#main.go
package main

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

func main() {
    r := gin.Default()
    //处理multipart forms提交文件时默认的内存限制是32 MiB
    r.MaxMultipartMemory = 8    //router.MaxMultipartMemory = 8 << 20  // 8 MiB
    r.LoadHTMLFiles("./index.html")
    r.GET("/index", func(c *gin.Context) {
        c.HTML(http.StatusOK,"index.html",nil)
    })
    r.POST("/upload", func(c *gin.Context) {
        //从请求中读取文件
        f, err := c.FormFile("f1")  //和从请求中获取携带的参数一样
        if err != nil {
            c.JSON(http.StatusBadRequest, gin.H{
                "error": err.Error(),
            })
        }else {
            //将读取到的文件保存到本地(服务端)
            //dst := fmt.Sprintf("./%s", f.Filename)
            dst := path.Join("./", f.Filename)
            _  = c.SaveUploadedFile(f,dst)
            c.JSON(http.StatusOK, gin.H{
                "status":"ok",
            })
        }
    })

    r.Run(":9090")
}

109_1.png
109_2.png

多文件上传

前端

#index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="f1">
    <input type="file" name="f1">
    <input type="submit" value="上传">
</form>
</body>
</html>

后端

#main.go
package main

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

func main() {
    r := gin.Default()
    //处理multipart forms提交文件时默认的内存限制是32 MiB
    r.MaxMultipartMemory = 8    //router.MaxMultipartMemory = 8 << 20  // 8 MiB
    r.LoadHTMLFiles("./index.html")
    r.GET("/index", func(c *gin.Context) {
        c.HTML(http.StatusOK,"index.html",nil)
    })
    r.POST("/upload", func(c *gin.Context) {
        //从请求中读取文件
        //f, err := c.FormFile("f1")  //和从请求中获取携带的参数一样
        //if err != nil {
        //  c.JSON(http.StatusBadRequest, gin.H{
        //      "error": err.Error(),
        //  })
        //}else {
        //  //将读取到的文件保存到本地(服务端)
        //  //dst := fmt.Sprintf("./%s", f.Filename)
        //  dst := path.Join("./", f.Filename)
        //  _  = c.SaveUploadedFile(f,dst)
        //  c.JSON(http.StatusOK, gin.H{
        //      "status":"ok",
        //  })
        //}

        form, _ := c.MultipartForm()
        files := form.File["f1"]
        for _, file := range files {
            log.Print(file.Filename)
            dst := path.Join("./", file.Filename)
            //上传文件到指定的目录
            c.SaveUploadedFile(file, dst)
        }
        c.JSON(http.StatusOK, gin.H{
            "message" : fmt.Sprintf("%d files uploaded!", len(files)),
        })
    })
    r.Run(":9090")
}

109_3.png
109_4.png
109_5.png

文章永久链接:https://tech.souyunku.com/38582

未经允许不得转载:搜云库技术团队 » gin系列-文件上传

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们