diff --git a/apis/public/file.go b/apis/public/file.go index f62ae44..f9c8215 100644 --- a/apis/public/file.go +++ b/apis/public/file.go @@ -7,6 +7,7 @@ import ( "ferry/tools/app" "fmt" "io/ioutil" + "os" "strings" "github.com/spf13/viper" @@ -27,10 +28,14 @@ import ( func UploadFile(c *gin.Context) { var ( - urlPrefix string - tag string + urlPrefix string + tag string + fileType string + saveFilePath string + err error ) tag, _ = c.GetPostForm("type") + fileType = c.DefaultQuery("file_type", "images") if viper.GetBool("settings.domain.getHost") { urlPrefix = fmt.Sprintf("http://%s/", c.Request.Host) @@ -43,40 +48,52 @@ func UploadFile(c *gin.Context) { } if tag == "" { - app.Error(c, 200, errors.New(""), "缺少标识") - return - } else { - switch tag { - case "1": // 单图 - files, err := c.FormFile("file") - if err != nil { - app.Error(c, 200, errors.New(""), "图片不能为空") - return - } - // 上传文件至指定目录 - guid := uuid.New().String() + tag = "1" + } - singleFile := "static/uploadfile/" + guid + utils.GetExt(files.Filename) - _ = c.SaveUploadedFile(files, singleFile) - app.OK(c, urlPrefix+singleFile, "上传成功") + saveFilePath = "static/uploadfile/" + fileType + "/" + _, err = os.Stat(saveFilePath) + if os.IsNotExist(err) { + err = os.MkdirAll(saveFilePath, 0755) + if err != nil { + app.Error(c, -1, err, fmt.Sprintf("创建图片目录失败,%v", err.Error())) return - case "2": // 多图 - files := c.Request.MultipartForm.File["file"] - multipartFile := make([]string, len(files)) - for _, f := range files { - guid := uuid.New().String() - multipartFileName := "static/uploadfile/" + guid + utils.GetExt(f.Filename) - _ = c.SaveUploadedFile(f, multipartFileName) - multipartFile = append(multipartFile, urlPrefix+multipartFileName) - } - app.OK(c, multipartFile, "上传成功") - return - case "3": // base64 - files, _ := c.GetPostForm("file") - ddd, _ := base64.StdEncoding.DecodeString(files) - guid := uuid.New().String() - _ = ioutil.WriteFile("static/uploadfile/"+guid+".jpg", ddd, 0666) - app.OK(c, urlPrefix+"static/uploadfile/"+guid+".jpg", "上传成功") } } + + switch tag { + case "1": // 单图 + files, err := c.FormFile("file") + if err != nil { + app.Error(c, 200, errors.New(""), "图片不能为空") + return + } + // 上传文件至指定目录 + guid := uuid.New().String() + + singleFile := saveFilePath + guid + utils.GetExt(files.Filename) + _ = c.SaveUploadedFile(files, singleFile) + app.OK(c, urlPrefix+singleFile, "上传成功") + return + case "2": // 多图 + files := c.Request.MultipartForm.File["file"] + multipartFile := make([]string, len(files)) + for _, f := range files { + guid := uuid.New().String() + multipartFileName := saveFilePath + guid + utils.GetExt(f.Filename) + _ = c.SaveUploadedFile(f, multipartFileName) + multipartFile = append(multipartFile, urlPrefix+multipartFileName) + } + app.OK(c, multipartFile, "上传成功") + return + case "3": // base64 + files, _ := c.GetPostForm("file") + ddd, _ := base64.StdEncoding.DecodeString(files) + guid := uuid.New().String() + _ = ioutil.WriteFile(saveFilePath+guid+".jpg", ddd, 0666) + app.OK(c, urlPrefix+saveFilePath+guid+".jpg", "上传成功") + default: + app.Error(c, 200, errors.New(""), "标识不正确") + return + } }