下面介绍一下简单的使用gin框架实现文件上传,代码如下
package main
import (
"github.com/gin-gonic/gin"
"fmt"
"net/http"
)
//1.单文件上传
//定义文件保存路径
const dir = "/Users/zonst/"
func main() {
router := gin.Default()
//单文件上传
router.POST("/upload/one",UploadOne)
//多文件上传
router.POST("/upload/many",UploadMany)
router.Run()
}
//单文件上传
func UploadOne(c *gin.Context) {
//获取文件头
file, err := c.FormFile("upload")
if err != nil {
c.String(http.StatusBadRequest, "请求失败")
return
}
//获取文件名
fileName := file.Filename
fmt.Println("文件名:", fileName)
//保存文件到服务器本地
//SaveUploadedFile(文件头,保存路径)
if err := c.SaveUploadedFile(file, dir+fileName); err != nil {
c.String(http.StatusBadRequest, "保存失败 Error:%s", err.Error())
return
}
c.String(http.StatusOK, "上传文件成功")
}
//2.多文件上传
func UploadMany(c *gin.Context) {
form, _ := c.MultipartForm()
//这里是多文件上传 在之前单文件upload上传的基础上加 [] 变成upload[] 类似文件数组的意思
files := form.File["upload[]"]
//循环存文件到服务器本地
for _, file := range files {
c.SaveUploadedFile(file, dir + file.Filename)
}
c.String(http.StatusOK, fmt.Sprintf("%d 个文件被上传成功!", len(files)))
}
我们接下来进行测试,使用postman
- 单文件上传测试
在这里选择Body传值,选择multipart/form-data
上传成功之后,在/Users/zonst/
下就可以看到Eagle.tif文件了
- 多文件上传测试
多文件也是一样,这次选择多个参数值
上传到就可看到了
总的来说gin框架还是很方便的,不多说