gin框架11--上传文件

gin框架11--上传文件

介绍

本节列出了上传文件的 api 用法,具体包括同时上传单个文件和同时上传多个文件,并将文件保存到项目当前目录。

案例

源码:

package main

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

func main() {
	r := gin.Default()
	// 为 multipart forms 设置较低的内存限制 (默认是 32 MiB)
	r.MaxMultipartMemory = 8 << 20
	r.POST("/upload/single", func(c *gin.Context) {
		file, _ := c.FormFile("file")
		log.Println(file.Filename)
		dst := "./" + file.Filename
		c.SaveUploadedFile(file, dst)
		c.String(200, fmt.Sprintf("'%s' uploaded", file.Filename))
	})

	r.POST("/upload/multi", func(c *gin.Context) {
		form, _ := c.MultipartForm()
		files := form.File["upload[]"]
		for _, file := range files {
			log.Println(file.Filename)
			dst := "./" + file.Filename
			c.SaveUploadedFile(file, dst)
		}
		c.String(200, fmt.Sprintf("'%d' files uploaded!", len(files)))
	})
	r.Run(":8080")
}

测试:

单个文件:
$ curl -X POST http://localhost:8080/upload/single \
  -F "file=@/home/xg/test1.txt" \
  -H "Content-Type: multipart/form-data"
输出:
'test1.txt' uploaded

多个文件:
$ curl -X POST http://localhost:8080/upload/multi \
  -F "upload[]=@/home/xg/test2.txt" \
  -F "upload[]=@/home/xg/test3.txt" \
  -H "Content-Type: multipart/form-data"
输出:
'2' files uploaded!

下载到当前目录:
$ ls
go.mod  go.sum  main.go  test1.txt  test2.txt  test3.txt

说明

gin官方文档 上传文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值