NatsQiniu.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package NatsServer
  2. import (
  3. "FollowUp_Notice/Nats"
  4. "FollowUp_Notice/logs"
  5. "context"
  6. "fmt"
  7. "github.com/qiniu/go-sdk/v7/auth/qbox"
  8. "github.com/qiniu/go-sdk/v7/storage"
  9. "strings"
  10. "time"
  11. )
  12. func Qiniu_UploadFile(localFile string, name string) (string, bool) {
  13. logs.Println("Qiniu_UploadFile =>", localFile, name)
  14. // 获取 七牛云的 配置信息
  15. msg, err := Nats.Nats.Request("Qiniu_Token", []byte(""), 3*time.Second)
  16. if err != nil {
  17. return string(msg.Data), false
  18. }
  19. fmt.Printf("Qiniu_Token : %s\n", string(msg.Data))
  20. Qiniu_cs := strings.Split(string(msg.Data), "|")
  21. Qiniu_AccessKey := Qiniu_cs[0]
  22. Qiniu_SecretKey := Qiniu_cs[1]
  23. Qiniu_BUCKET := Qiniu_cs[2]
  24. Qiniu_Url := Qiniu_cs[3]
  25. // 开始上传 七牛云
  26. Qiniu := qbox.NewMac(Qiniu_AccessKey, Qiniu_SecretKey)
  27. // 自定义返回值结构体
  28. type MyPutRet struct {
  29. Key string
  30. Hash string
  31. Fsize int
  32. Bucket string
  33. Name string
  34. }
  35. //key := "your file save key"
  36. // 使用 returnBody 自定义回复格式
  37. putPolicy := storage.PutPolicy{
  38. Scope: Qiniu_BUCKET,
  39. ReturnBody: `{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}`,
  40. }
  41. //mac := qbox.NewMac(conf.Qiniu_AccessKey, conf.Qiniu_SecretKey)
  42. upToken := putPolicy.UploadToken(Qiniu)
  43. cfg := storage.Config{}
  44. formUploader := storage.NewFormUploader(&cfg)
  45. ret := MyPutRet{}
  46. putExtra := storage.PutExtra{
  47. Params: map[string]string{
  48. "x:name": "github logo",
  49. },
  50. }
  51. err = formUploader.PutFile(context.Background(), &ret, upToken, name, localFile, &putExtra)
  52. if err != nil {
  53. logs.Println("七牛云", "上传文件失败 "+localFile, err.Error())
  54. return "", false
  55. }
  56. fmt.Println(ret.Bucket, ret.Key, ret.Fsize, ret.Hash, ret.Name)
  57. return Qiniu_Url + name, true
  58. }