qiniu.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package oss
  2. import (
  3. "bytes"
  4. "context"
  5. "github.com/qiniu/go-sdk/v7/auth/qbox"
  6. "github.com/qiniu/go-sdk/v7/storage"
  7. )
  8. type QiNiuSdk struct {
  9. accessKey string
  10. secretKey string
  11. bucket string
  12. hostUrl string
  13. }
  14. func NewQiNiuSdk(AccessKey, SecretKey, Bucket, HostUrl string) *QiNiuSdk {
  15. return &QiNiuSdk{
  16. accessKey: AccessKey,
  17. secretKey: SecretKey,
  18. bucket: Bucket,
  19. hostUrl: HostUrl,
  20. }
  21. }
  22. func (s *QiNiuSdk) Upload(data []byte, dataLen int64, filename string) (url string, err error) {
  23. var (
  24. putPolicy = storage.PutPolicy{
  25. Scope: s.bucket,
  26. }
  27. mac = qbox.NewMac(s.accessKey, s.secretKey)
  28. upToken = putPolicy.UploadToken(mac)
  29. cfg = storage.Config{}
  30. )
  31. // 空间对应的机房
  32. cfg.Zone = &storage.ZoneHuabei
  33. cfg.UseHTTPS = false
  34. cfg.UseCdnDomains = false
  35. var (
  36. formUploader = storage.NewFormUploader(&cfg)
  37. ret = storage.PutRet{}
  38. putExtra = storage.PutExtra{}
  39. )
  40. if err = formUploader.Put(context.Background(), &ret, upToken, filename, bytes.NewReader(data), dataLen, &putExtra); err == nil {
  41. url = s.hostUrl + "/" + ret.Key
  42. }
  43. return
  44. }
  45. func (s *QiNiuSdk) GetUpToken() (upToken, hostUrl string) {
  46. var (
  47. putPolicy = storage.PutPolicy{
  48. Scope: s.bucket,
  49. }
  50. mac = qbox.NewMac(s.accessKey, s.secretKey)
  51. )
  52. upToken = putPolicy.UploadToken(mac)
  53. hostUrl = s.hostUrl
  54. return
  55. }