qiniu.go 1010 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package admin
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. "zhiyuan/pkg/app"
  7. "zhiyuan/pkg/config"
  8. "zhiyuan/pkg/utils"
  9. "github.com/gin-gonic/gin"
  10. "github.com/qiniu/go-sdk/v7/auth"
  11. "github.com/qiniu/go-sdk/v7/storage"
  12. )
  13. func QiniuToken(c *gin.Context) {
  14. fileType := strings.ToLower(c.Query("file_type"))
  15. /*if fileType != "jpg" && fileType != "png" && fileType != "pdf" && fileType != "docx" && fileType != "svg" && fileType != "mp4" {
  16. app.Error(c, "文件后缀有误")
  17. return
  18. }*/
  19. var fsizeLimit int64 = 1024 * 1024 * 100
  20. if fileType == "mp4" {
  21. fsizeLimit = 1024 * 1024 * 30
  22. }
  23. key := utils.ToStr(time.Now().UnixNano()) + string(utils.RandomCreateBytes(10, utils.RAND_KIND_NUM)) + "." + fileType
  24. putPolicy := storage.PutPolicy{
  25. Scope: fmt.Sprintf("%s:%s", config.Cfg.Qiniu.Bucket, key),
  26. FsizeLimit: fsizeLimit,
  27. }
  28. mac := auth.New(config.Cfg.Qiniu.AccessKey, config.Cfg.Qiniu.SecretKey)
  29. upToken := putPolicy.UploadToken(mac)
  30. app.Success(c, gin.H{
  31. "token": upToken,
  32. "key": key,
  33. })
  34. }