Gin文件上传只需几行代码

Posted jiangxiaoju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gin文件上传只需几行代码相关的知识,希望对你有一定的参考价值。

原创不易,未经允许,请勿转载。

文章目录

一、单文件上传

  • SaveUploadedFile:这个方法用来保存上传的文件,第一个参数为上传的文件,第二个参数为文件保存的地址
package main

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

func main() 
	r := gin.Default()
	//限制上传最大尺寸 默认大小为 const defaultMultipartMemory = 32 << 20 // 32 MB
	r.MaxMultipartMemory = 8 << 20
	r.POST("/upload", func(c *gin.Context) 
		file, err := c.FormFile("file")
		if err != nil 
			c.JSON(500, gin.H"message": "上传图片出错")
		
		c.SaveUploadedFile(file, file.Filename)
		c.JSON(http.StatusOK, gin.H"message": file.Filename)
	)
	r.Run(":8888")


二、多文件上传

package main

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

func main() 
	r := gin.Default()
	r.MaxMultipartMemory = 8 << 20
	r.POST("/upload", func(c *gin.Context) 
		form, err := c.MultipartForm()
		if err != nil 
			c.JSON(http.StatusBadRequest, gin.H"message": err.Error())
		
		// 获取所有图片
		files := form.File["files"]
		// 遍历所有图片
		for _, file := range files 
			// 逐个存
			if err := c.SaveUploadedFile(file, file.Filename); err != nil 
				c.JSON(http.StatusBadRequest, gin.H"message": fmt.Sprintf("upload err %s", err.Error()))
				return
			
		
		c.JSON(http.StatusOK, gin.H"message": fmt.Sprintf("upload ok %d files", len(files)))
	)
	r.Run(":8888")


三、使用Postman进行测试

创建一个测试,方法使用POST,在Body里面,选择form-data,在key那边,填入参数名字为file,并把类型选择为File,然后在value中选择要上传的文件



在项目根目录可以发现上传后的文件



拒绝白嫖从一键三连开始!

原创不易,未经允许,请勿转载。

博客主页:https://xiaojujiang.blog.csdn.net/

以上是关于Gin文件上传只需几行代码的主要内容,如果未能解决你的问题,请参考以下文章

Gin文件上传只需几行代码

上传文件时杜松子酒不断返回204

Go gin之文件上传

如何在 Flutter Web 中选择要上传的文件夹/文件夹?

gin上传文件

gin上传文件