1. 单文件
首先,使用方法 c.FormFile 解析目标文件,参数为 文件字段的key(从前端获取)。然后,用 c.SaveUploadedFile(file, “des path”) 来将文件上传到指定的路径中。
func main() {router := gin.Default()router.POST("/upload", func(c *gin.Context) {// 单文件file, _ := c.FormFile("file")log.Println(file.Filename)// 上传文件至指定目录c.SaveUploadedFile(file, "/")c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))})router.Run(":8080")}
APIpost 拟前端上传文件,使用 param 参数格式:<br />
2. 多文件
原理一样,不过将多个 文件字段的 key 都设置为file (类似于数组),然后使用 c.MultipartForm() 和 form.File[“file”] 逐一上传
func main() {router := gin.Default()// 处理multipart forms提交文件时默认的内存限制是32 MiB// 可以通过下面的方式修改// router.MaxMultipartMemory = 8 << 20 // 8 MiBrouter.POST("/upload", func(c *gin.Context) {// Multipart formform, _ := c.MultipartForm()files := form.File["file"]for _, file := range files {log.Println(file.Filename)// 上传文件到指定的目录c.SaveUploadedFile(file, "xxxx")}c.JSON(http.StatusOK, gin.H{"message": fmt.Sprintf("%d files uploaded!", len(files)),})})router.Run()}
测试结果
