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