这篇文章我们主要讲gin框架的文件上传功能
1、单文件上传
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.POST("/upload", func(c *gin.Context) {
file, _ := c.FormFile("file")
// 上传文件至指定目录
if err := c.SaveUploadedFile(file, "./upload/"+file.Filename); err != nil {
fmt.Println(err)
}
c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
})
router.Run(":8080")
}
postman示例
curl示例
curl --location --request POST 'http://127.0.0.1:8080/upload' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------091075461974876853112895' \
--form 'file=@/C:/Users/Administrator/Pictures/go.jpg'
2、多文件上传
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.POST("/upload", func(c *gin.Context) {
file, _ := c.FormFile("file")
// 上传文件至指定目录
if err := c.SaveUploadedFile(file, "./upload/"+file.Filename); err != nil {
fmt.Println(err)
}
c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
})
router.POST("/upload/multi", func(c *gin.Context) {
// Multipart form
form, _ := c.MultipartForm()
files := form.File["file[]"]
for _, file := range files {
if err := c.SaveUploadedFile(file, "./upload/"+file.Filename); err != nil {
fmt.Println(err)
}
}
c.String(http.StatusOK, fmt.Sprintf("%d files uploaded!", len(files)))
})
router.Run(":8080")
}
postman示例
curl示例
curl --location --request POST 'http://127.0.0.1:8080/upload/multi' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------296843343751307885084965' \
--form 'file[]=@/C:/Users/Administrator/Pictures/go.jpg' \
--form 'file[]=@/C:/Users/Administrator/Pictures/a.jpg'
如果觉得对你有用,记着关注我!你的关注,是我最更新的最大动力!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有