u_oss.go 896 B

1234567891011121314151617181920212223242526272829303132
  1. package util
  2. import (
  3. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  4. "os"
  5. )
  6. // LimitUpload 限速上传
  7. // limitBit 默认单位为bit/s。比如 41943040 为 5 MB/s。
  8. func LimitUpload(bucket *oss.Bucket, limitBit int64, ossObjectKey string, localFilePath string) error {
  9. fd, err := os.Open(localFilePath)
  10. if err != nil {
  11. return err
  12. }
  13. defer fd.Close()
  14. if err = bucket.PutObject(ossObjectKey, fd, oss.TrafficLimitHeader(limitBit)); err != nil {
  15. return err
  16. }
  17. return nil
  18. }
  19. // LimitDownload 限速下载
  20. // limitBit 默认单位为bit/s。比如 41943040 为 5 MB/s。
  21. func LimitDownload(bucket *oss.Bucket, limitBit int64, ossObjectKey string, localFilePath string) error {
  22. if err := CreateParentDir(localFilePath); err != nil {
  23. return err
  24. }
  25. if err := bucket.GetObjectToFile(ossObjectKey, localFilePath, oss.TrafficLimitHeader(limitBit)); err != nil {
  26. return err
  27. }
  28. return nil
  29. }