upload.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package shanghu
  2. import (
  3. "context"
  4. "duoduo/apis/shanghu/models"
  5. "duoduo/conf"
  6. "duoduo/tools/app"
  7. "fmt"
  8. "github.com/gin-gonic/gin"
  9. "github.com/qiniu/go-sdk/v7/auth/qbox"
  10. "github.com/qiniu/go-sdk/v7/storage"
  11. "time"
  12. )
  13. func UploadPicture(c *gin.Context) {
  14. var inData models.UploadPictureRequest
  15. var outData models.UploadPictureReply
  16. confIni, err := conf.ConnIni()
  17. if err != nil {
  18. app.Error(c, 400, err, err.Error())
  19. return
  20. }
  21. err = c.ShouldBindJSON(&inData)
  22. if err != nil {
  23. app.Error(c, 400, err, err.Error())
  24. return
  25. }
  26. for i := 0; i < len(inData.Picture); i++ {
  27. //fmt.Println(inData.Pictures[i])
  28. //上传图片
  29. timeUnixNano := time.Now().UnixNano() //单位纳秒
  30. fileName := fmt.Sprintf("%d.jpg", timeUnixNano)
  31. //七牛云上传图片
  32. bucket := "imgxx"
  33. key := "shanghuka/" + inData.UserCode + "/" + time.Now().Format(time.DateOnly) + "/" + fileName
  34. putPolicy := storage.PutPolicy{
  35. Scope: bucket,
  36. }
  37. mac := qbox.NewMac(confIni.MustValue("ly-qn", "access_key"), confIni.MustValue("ly-qn", "secret_key"))
  38. upToken := putPolicy.UploadToken(mac)
  39. cfg := storage.Config{}
  40. // 空间对应的机房
  41. cfg.Zone = &storage.ZoneHuanan
  42. // 是否使用https域名
  43. cfg.UseHTTPS = false
  44. // 上传是否使用CDN上传加速
  45. cfg.UseCdnDomains = false
  46. // 构建表单上传的对象
  47. baseUploader := storage.NewBase64Uploader(&cfg)
  48. ret := storage.PutRet{}
  49. //data, err := base64.RawStdEncoding.DecodeString(inData.Pictures[i])
  50. //if err != nil {
  51. // app.Error(c, 500, err, "上传图片失败")
  52. // return
  53. //}
  54. err = baseUploader.Put(context.Background(), &ret, upToken, key, []byte(inData.Picture[i]), nil)
  55. if err != nil {
  56. app.Error(c, 500, err, "上传图片失败")
  57. return
  58. }
  59. outData.Picture = append(outData.Picture, "http://lingyang.shisanmiao.com/"+key)
  60. }
  61. app.OK(c, outData, app.Success)
  62. }