Browse Source

上传图片接口

xingzai 2 years ago
parent
commit
240719328a
5 changed files with 118 additions and 0 deletions
  1. 73 0
      controllers/resource.go
  2. 1 0
      models/db.go
  3. 32 0
      models/resource.go
  4. 9 0
      routers/commentsRouter.go
  5. 3 0
      routers/router.go

+ 73 - 0
controllers/resource.go

@@ -5,6 +5,8 @@ import (
 	"hongze/hongze_clpt/models"
 	"hongze/hongze_clpt/services"
 	"hongze/hongze_clpt/utils"
+	"os"
+	"path"
 	"time"
 )
 
@@ -70,3 +72,74 @@ func (this *BaseResourceController) GetSmsCode() {
 	br.Ret = 200
 	br.Success = true
 }
+
+// @Title 图片上传
+// @Description 图片上传接口
+// @Param   file   query   file  true       "文件"
+// @Success 200 新增成功
+// @router /image/upload [post]
+func (this *ResourceController) Upload() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	f, h, err := this.GetFile("file")
+	if err != nil {
+		br.Msg = "获取资源信息失败"
+		br.ErrMsg = "获取资源信息失败,Err:" + err.Error()
+		return
+	}
+	ext := path.Ext(h.Filename)
+	dateDir := time.Now().Format("20060102")
+	uploadDir := "static/temp/" + dateDir
+	err = os.MkdirAll(uploadDir, 777)
+	if err != nil {
+		br.Msg = "存储目录创建失败"
+		br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
+		return
+	}
+	randStr := utils.GetRandStringNoSpecialChar(28)
+	fileName := randStr + ext
+	fpath := uploadDir + "/" + fileName
+	defer f.Close() //关闭上传文件
+	err = this.SaveToFile("file", fpath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
+	}
+	savePath := uploadDir + time.Now().Format("200601/20060102/")
+	savePath += fileName
+	//上传到阿里云
+	err = services.UploadFileToAliyun("", fpath, savePath)
+	if err != nil {
+		br.Msg = "文件上传失败"
+		br.ErrMsg = "文件上传失败,Err:" + err.Error()
+		return
+	}
+	fileHost := "https://hzstatic.hzinsights.com/"
+	resourceUrl := fileHost + savePath
+	defer func() {
+		os.Remove(fpath)
+	}()
+	item := new(models.Resource)
+	item.ResourceUrl = resourceUrl
+	item.ResourceType = 1
+	item.CreateTime = time.Now()
+	newId, err := models.AddResource(item)
+	if err != nil {
+		br.Msg = "资源上传失败"
+		br.ErrMsg = "资源上传失败,Err:" + err.Error()
+		return
+	}
+	resp := new(models.ResourceResp)
+	resp.Id = newId
+	resp.ResourceUrl = resourceUrl
+
+	br.Msg = "上传成功"
+	br.Ret = 200
+	br.Success = true
+	br.Data = resp
+	return
+}

+ 1 - 0
models/db.go

@@ -38,6 +38,7 @@ func init() {
 		new(CygxArticleAsk),
 		new(CygxSearchKeyWord),
 		new(CygxSearchKeyWordLog),
+		new(Resource),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 32 - 0
models/resource.go

@@ -0,0 +1,32 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type Resource struct {
+	Id           int       `orm:"column(id);" description:"资源id"`
+	ResourceUrl  string    `description:"资源地址"`
+	CreateTime   time.Time `description:"创建时间"`
+	ResourceType int       `description:"资源类型,1:图片,2:音频,3:视频 "`
+}
+
+type ResourceResp struct {
+	Id          int64  `orm:"column(id);" description:"用户id"`
+	ResourceUrl string `description:"资源地址"`
+	PlaySeconds uint32 `description:"播放时长,单位秒"`
+}
+
+func AddResource(item *Resource) (newId int64, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	newId, err = o.Insert(item)
+	return
+}
+
+func GetResourceById(id string) (item *Resource, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := "SELECT * FROM resource WHERE id=? "
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -97,6 +97,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ResourceController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:ResourceController"],
+        beego.ControllerComments{
+            Method: "Upload",
+            Router: `/image/upload`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:UserCommonController"] = append(beego.GlobalControllerRouter["hongze/hongze_clpt/controllers:UserCommonController"],
         beego.ControllerComments{
             Method: "Login",

+ 3 - 0
routers/router.go

@@ -45,6 +45,9 @@ func init() {
 			web.NSInclude(
 				&controllers.BaseResourceController{},
 			),
+			web.NSInclude(
+				&controllers.ResourceController{},
+			),
 		),
 		web.NSNamespace("/home",
 			web.NSInclude(