• Gin框架文件上传


    Gin框架文件上传

    一、单个文件上传

    文件上传前端页面代码:

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

    后端gin框架部分代码:

    package main
    
    import (
    	"fmt"
    	"github.com/gin-gonic/gin"
    	"net/http"
    	"path"
    )
    
    func main() {
    	r := gin.Default()
    	r.LoadHTMLFiles("../templates/fileUpload.html")
    	r.GET("/upload", func(c *gin.Context) {
    		c.HTML(http.StatusOK, "fileUpload.html", nil)
    
    	})
    
    	// 上传单文件
    	r.POST("/upload", func(c *gin.Context) {
    		// 从请求中读取文件
    		f, err := c.FormFile("file1") // 从请求中获取参数一样
            
    		// 处理multipart forms提交文件时默认的内存限制是32 MiB
    		// 可以通过下面的方式修改,一点一点保存数据
    		r.MaxMultipartMemory = 1 << 20 // 8 MiB
    		fmt.Println(f.Size, "sdfsd")
    		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(":9999")
    }
    
    

    image-20211117220554660

    二、多个文件上传

    package main
    
    import (
    	"fmt"
    	"github.com/gin-gonic/gin"
    	"net/http"
    	"path"
    )
    
    func main() {
    	r := gin.Default()
    	r.LoadHTMLFiles("../templates/fileUpload.html")
    	r.GET("/upload", func(c *gin.Context) {
    		c.HTML(http.StatusOK, "fileUpload.html", nil)
    
    	})
    
    	// 上传多文件
    	r.POST("/uploadMany", func(c *gin.Context) {
    		// 从请求中读取文件
    		fromData, _ := c.MultipartForm()
    		files := fromData.File["file1"] // 从请求中获取参数一样
    		// 处理multipart forms提交文件时默认的内存限制是32 MiB
    
    		// 可以通过下面的方式修改
    		r.MaxMultipartMemory = 1 << 20 // 8 MiB
    
    		for _, fileObj := range files {
    			fmt.Printf("fileName:%s", fileObj.Filename)
    			dst := path.Join("./", fileObj.Filename)
    			// 上传指定目录
    			err := c.SaveUploadedFile(fileObj, dst)
    			if err != nil {
    				// 异常处理
    				fmt.Printf("file upload err fileName:%s", fileObj.Filename)
    			}
    		}
    		c.JSON(http.StatusOK, gin.H{
    			"status": "ok",
    		})
    
    	})
    	r.Run(":9999")
    }
    
    

    image-20211117220450154

  • 相关阅读:
    017-新闻表分页增删改查
    016-页面生命周期
    015-用户登录注册
    014-Session服务器状态保持
    013-Cookie状态保持
    012-ViewState状态保持
    011-Server服务器对象属性
    010-判断是否回传IsPostBack属性
    Github使用教程
    获取中文时间
  • 原文地址:https://www.cnblogs.com/randysun/p/15626634.html
Copyright © 2020-2023  润新知