首先是接受多个图片的接口,就是接受多个文件
收到post请求后首先创建一个文件夹,这里利用uuid创建出唯一标识字符串作为文件夹名称,解析表单中的一串文件循环保存到本地服务器
- package main
-
- import (
- "github.com/gin-gonic/gin"
- "github.com/google/uuid"
- "net/http"
- )
-
- func saveImages() {
- router := gin.Default()
- router.POST("", func(context *gin.Context) {
- form, err := context.MultipartForm()
- if err != nil {
- context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
- return
- }
- folder := uuid.New().String()
- for _, file := range form.File["file"] {
- err := context.SaveUploadedFile(file, "emergency/images/"+folder+"/"+file.Filename) //视频存储服务器的地址
- if err != nil {
- context.JSON(http.StatusInternalServerError, err.Error())
- return
- }
- }
- context.String(http.StatusOK, folder)
- })
- err := router.Run(":8080")
- if err != nil {
- println(err.Error())
- return
- }
- }
对于单个的视频文件,当然使用上面这个代码也是可以的,不过对于单个文件来说,如果请求中只包含一个文件,我们并不需要使用multipartform
- package main
-
- import (
- "github.com/gin-gonic/gin"
- "github.com/google/uuid"
- "net/http"
- )
-
- func saveVideo() {
- router := gin.Default()
- router.POST("", func(context *gin.Context) {
- file, err := context.FormFile("file")
- if err != nil {
- context.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
- return
- }
- folder := uuid.New().String()
- err = context.SaveUploadedFile(file, "emergency/video/"+folder+"/"+file.Filename) //视频存储服务器的地址
- if err != nil {
- context.JSON(http.StatusInternalServerError, err.Error())
- return
- }
- context.String(http.StatusOK, folder)
- })
- err := router.Run(":8080")
- if err != nil {
- println(err.Error())
- return
- }
- }