package controller import ( "fmt" "github.com/gin-gonic/gin" "log" "niupicUpload/service" "niupicUpload/util" "os" "path" "strings" "time" ) /* * @author: sre @date: 2022/8/19 0019 @desc: ImageController * */ type ImageController struct{} func NewImageController() ImageController { return ImageController{} } // UploadNiupic 上传Niupic func (a *ImageController) UploadNiupic(c *gin.Context) { resultRes := util.NewResult(c) f, err := c.FormFile("file") if err != nil { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败!", }) return } else { //文件类型 fileExt := strings.ToLower(path.Ext(f.Filename)) fileName := util.Md5Encode(fmt.Sprintf("%s%s", f.Filename, time.Now().String())) fildDir := fmt.Sprintf("%s%d%s_", "upload_tmp_", time.Now().Year(), time.Now().Month().String()) subfilepath := fmt.Sprintf("%s%s%s", fildDir, fileName, fileExt) err := c.SaveUploadedFile(f, subfilepath) if err != nil { log.Println(err) resultRes.Error(1, "图片保存失败") } else { //校验文件名称和类型的正确性 if strings.Contains(strings.ToUpper(fileExt), "JPEG") || strings.Contains(strings.ToUpper(fileExt), "JPG") || strings.Contains(strings.ToUpper(fileExt), "PNG") || strings.Contains(strings.ToUpper(fileExt), "GIF") { _, err := util.CheckImageFile(subfilepath) if err != nil { c.JSON(200, gin.H{ "code": 400, "msg": "上传失败 文件格式异常!", }) return } } url, err := service.UploadNiupic(subfilepath) if err != nil { resultRes.Error(1, "图片上传失败") } os.Remove(subfilepath) log.Println("url:", url) c.JSON(200, gin.H{ "code": 200, "msg": "ok", "result": url, }) } } }