本文介绍如何在上传、下载文件(Object)时,通过在请求中携带限速参数并设置限速值,以保证其他应用的正常带宽。
注意事项
简单上传和下载限速
以下代码用于简单上传和下载文件时设置单链接限速:
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填写Bucket名称,例如examplebucket。
bucket, err := client.Bucket("examplebucket")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填写待上传的本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
fd, err := os.Open("D:\\localpath\\examplefile.txt")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer fd.Close()
// 设置上传限速,参数格式为数字,默认单位为bit/s。本示例设置限速值为5 MB/s。
var traffic int64 = 41943040
// 限速上传。
// 填写Object的完整路径,完整路径中不包含Bucket名称。
err = bucket.PutObject("exampledir/exampleobject.txt", fd, oss.TrafficLimitHeader(traffic))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 限速下载。
// 依次填写Object的完整路径,完整路径中不包含Bucket名称(例如exampledir/exampleobject.txt)以及本地文件的完整路径(例如D:\\localpath\\exampleobject.txt)。
err = bucket.GetObjectToFile("exampledir/exampleobject.txt", "D:\\localpath\\exampleobject.txt", oss.TrafficLimitHeader(traffic))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
分片上传限速
以下代码用于分片上传设置单链接限速:
package main
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func main() {
// 创建OSSClient实例。
// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
client, err := oss.New("yourEndpoint", "yourAccessKeyId", "yourAccessKeySecret")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 填写Bucket名称,例如examplebucket。
bucket, err := client.Bucket("examplebucket")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 设置上传限速,参数格式为数字,默认单位为bit/s。本示例设置限速值为5 MB/s。
var traffic int64 = 41943040
// 大文件分片上传。
// 将文件分成3个分片,具体分片数可以视文件大小而定。
chunks, err := oss.SplitFileByPartNum("localFile", 3)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 打开文件。
fd, err := os.Open("fileName")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer fd.Close()
// 初始化上传的文件。
imur, err := bucket.InitiateMultipartUpload("exampledir/exampleobject.txt")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 分片上传并限速。
var parts []oss.UploadPart
for _