123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package util
- import (
- "github.com/aliyun/aliyun-oss-go-sdk/oss"
- "os"
- "strconv"
- )
- // LimitUpload 限速上传
- // limitBit 默认单位为bit/s。比如 41943040 为 5 MB/s。
- func LimitUpload(bucket *oss.Bucket, limitBit int64, ossObjectKey string, localFilePath string) error {
- fd, err := os.Open(localFilePath)
- if err != nil {
- return err
- }
- defer fd.Close()
- if err = bucket.PutObject(ossObjectKey, fd, oss.TrafficLimitHeader(limitBit)); err != nil {
- return err
- }
- return nil
- }
- // LimitDownload 限速下载
- // limitBit 默认单位为bit/s。比如 41943040 为 5 MB/s。
- func LimitDownload(bucket *oss.Bucket, limitBit int64, ossObjectKey string, localFilePath string) error {
- if err := CreateParentDir(localFilePath); err != nil {
- return err
- }
- if err := bucket.GetObjectToFile(ossObjectKey, localFilePath, oss.TrafficLimitHeader(limitBit)); err != nil {
- return err
- }
- return nil
- }
- func GetOSSFileSize(bucket *oss.Bucket, objectName string) (int, error) {
- // 获取文件的元信息
- attrs, err := bucket.GetObjectDetailedMeta(objectName)
- if err != nil {
- return 0, err
- }
- // 从元信息中获取文件大小
- size, err := strconv.Atoi(attrs.Get("Content-Length"))
- if err != nil {
- return 0, err
- }
- return size, nil
- }
|