首先是接受多个图片的接口,就是接受多个文件
收到post请求后首先创建一个文件夹,这里利用uuid创建出唯一标识字符串作为文件夹名称,解析表单中的一串文件循环保存到本地服务器
代码语言:javascript复制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
代码语言:javascript复制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
}
}