| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package controllers
- import (
- "Cold_Api/conf"
- "Cold_Api/controllers/lib"
- "Cold_Api/models/Account"
- "fmt"
- beego "github.com/beego/beego/v2/server/web"
- )
- type UpFileController struct {
- beego.Controller
- Admin_r Account.Admin // 登陆的用户
- }
- func (c *UpFileController) Prepare() {
- GetCookie := c.Ctx.GetCookie("User_tokey")
- GetString := c.GetString("User_tokey")
- User_tokey := GetString
- if len(User_tokey) == 0 {
- User_tokey = GetCookie
- }
- if Account.Admin_r == nil {
- return
- }
- c.Admin_r = *Account.Admin_r
- }
- //func (c *UpFileController) UpFile() {
- //
- // f, h, _ := c.GetFile("file") //获取上传的文件
- // ext := path.Ext(h.Filename)
- // //验证后缀名是否符合要求
- // var AllowExtMap map[string]bool = map[string]bool{
- // ".jpg": true,
- // ".jpeg": true,
- // ".png": true,
- // ".pdf": true,
- // }
- // if _, ok := AllowExtMap[ext]; !ok {
- // c.Ctx.WriteString("后缀名不符合上传要求")
- // return
- // }
- // //创建目录
- // uploadDir := conf.Oss_file // + time.Now().Format("2006/01/02/")
- // err := os.MkdirAll(uploadDir, 777)
- // if err != nil {
- // c.Ctx.WriteString(fmt.Sprintf("%v", err))
- // return
- // }
- // //构造文件名称
- // rand.Seed(time.Now().UnixNano())
- // randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000)
- // hashName := md5.Sum([]byte(time.Now().Format("2006_01_02_15_04_05_") + randNum))
- //
- // fileName := fmt.Sprintf("%x", hashName) + ext
- // //this.Ctx.WriteString( fileName )
- //
- // fpath := uploadDir + fileName
- // println(fpath)
- // defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况
- // err = c.SaveToFile("file", fpath)
- // if err != nil {
- // c.Ctx.WriteString(fmt.Sprintf("%v", err))
- // }
- // c.Ctx.WriteString("{\n \"code\": 0\n ,\"msg\": \"ok!\"\n ,\"data\": {\n \"src\": \"" + conf.Oss + fileName + "\"\n }\n} ")
- //}
- // ConfigUpFileToken 获取七牛云上传Token
- func (c *UpFileController) ConfigUpFileToken() {
- c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.UploadToken(c.GetString("T_suffix"))}
- c.ServeJSON()
- return
- }
- // UploadFile 公共文件上传接口,上传文件到七牛云并返回七牛云文件路径
- func (c *UpFileController) UploadFile() {
- // 获取上传的文件(单文件模式)
- file, fileHeader, err := c.GetFile("file")
- if err != nil {
- c.Data["json"] = lib.JSONS{Code: 202, Msg: "请选择要上传的文件"}
- c.ServeJSON()
- return
- }
- defer file.Close()
- // 验证文件大小(500M限制)
- if fileHeader.Size > conf.DefaultUploadFileSizeLimit {
- c.Data["json"] = lib.JSONS{Code: 202, Msg: fmt.Sprintf("文件大小超过%dM限制", conf.DefaultUploadFileSizeLimit/1024/1024)}
- c.ServeJSON()
- return
- }
- // 上传到七牛云
- fileUrl, err := lib.UploadFileToQiniu(fileHeader, "uploads/")
- if err != nil {
- c.Data["json"] = lib.JSONS{Code: 202, Msg: fmt.Sprintf("上传文件 %s 到七牛云失败: %v", fileHeader.Filename, err)}
- c.ServeJSON()
- return
- }
- // 返回成功结果
- c.Data["json"] = lib.JSONS{
- Code: 200,
- Msg: "上传成功!",
- Data: map[string]interface{}{
- "url": fileUrl,
- "name": fileHeader.Filename,
- "size": fileHeader.Size,
- },
- }
- c.ServeJSON()
- return
- }
|