util_oss.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package util
  2. import (
  3. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  4. "os"
  5. "path/filepath"
  6. )
  7. // LimitUpload 限速上传
  8. // limitBit 默认单位为bit/s。比如 41943040 为 5 MB/s。
  9. func LimitUpload(bucket *oss.Bucket, limitBit int64, ossObjectKey string, localFilePath string) error {
  10. fd, err := os.Open(localFilePath)
  11. if err != nil {
  12. return err
  13. }
  14. defer fd.Close()
  15. if err = bucket.PutObject(ossObjectKey, fd, oss.TrafficLimitHeader(limitBit)); err != nil {
  16. return err
  17. }
  18. return nil
  19. }
  20. // LimitDownload 限速下载
  21. // limitBit 默认单位为bit/s。比如 41943040 为 5 MB/s。
  22. func LimitDownload(bucket *oss.Bucket, limitBit int64, ossObjectKey string, localFilePath string) error {
  23. if err := CreateParentDir(localFilePath); err != nil {
  24. return err
  25. }
  26. if err := bucket.GetObjectToFile(ossObjectKey, localFilePath, oss.TrafficLimitHeader(limitBit)); err != nil {
  27. return err
  28. }
  29. return nil
  30. }
  31. // CreateParentDir 存在不创建,不存在则创建父目录
  32. func CreateParentDir(filePath string) error {
  33. if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
  34. return err
  35. }
  36. return nil
  37. }