From 74a043a5c92df147efc90939d4a59247ee07cb61 Mon Sep 17 00:00:00 2001 From: YuleiLan Date: Thu, 17 Sep 2020 14:54:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apis/public/file.go | 85 +++++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 34 deletions(-) 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 + } }