qiniu.go 1.3 KB

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