add progress
This commit is contained in:
@@ -19,7 +19,7 @@ func log_status(err error) {
|
||||
}
|
||||
if cos.IsNotFoundError(err) {
|
||||
// WARN
|
||||
fmt.Println("WARN: Resource is not existed")
|
||||
fmt.Println("WARN: Resource is not existed")
|
||||
} else if e, ok := cos.IsCOSError(err); ok {
|
||||
fmt.Printf("ERROR: Code: %v\n", e.Code)
|
||||
fmt.Printf("ERROR: Message: %v\n", e.Message)
|
||||
@@ -33,7 +33,7 @@ func log_status(err error) {
|
||||
}
|
||||
|
||||
func main() {
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com")
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com")
|
||||
b := &cos.BaseURL{BucketURL: u}
|
||||
c := cos.NewClient(b, &http.Client{
|
||||
Transport: &cos.AuthorizationTransport{
|
||||
@@ -48,8 +48,8 @@ func main() {
|
||||
},
|
||||
})
|
||||
|
||||
// Case1 Download object into ReadCloser(). the body needs to be closed
|
||||
name := "test/hello.txt"
|
||||
// Case1 通过resp.Body下载对象,Body需要关闭
|
||||
name := "test/example"
|
||||
resp, err := c.Object.Get(context.Background(), name, nil)
|
||||
log_status(err)
|
||||
|
||||
@@ -57,8 +57,8 @@ func main() {
|
||||
resp.Body.Close()
|
||||
fmt.Printf("%s\n", string(bs))
|
||||
|
||||
// Case2 Download object to local file. the body needs to be closed
|
||||
fd, err := os.OpenFile("hello.txt", os.O_WRONLY|os.O_CREATE, 0660)
|
||||
// Case2 下载对象到文件. Body需要关闭
|
||||
fd, err := os.OpenFile("test", os.O_WRONLY|os.O_CREATE, 0660)
|
||||
log_status(err)
|
||||
|
||||
defer fd.Close()
|
||||
@@ -68,11 +68,11 @@ func main() {
|
||||
io.Copy(fd, resp.Body)
|
||||
resp.Body.Close()
|
||||
|
||||
// Case3 Download object to local file path
|
||||
_, err = c.Object.GetToFile(context.Background(), name, "hello_1.txt", nil)
|
||||
// Case3 下载对象到文件
|
||||
_, err = c.Object.GetToFile(context.Background(), name, "test", nil)
|
||||
log_status(err)
|
||||
|
||||
// Case4 Download object with range header, can used to concurrent download
|
||||
// Case4 range下载对象,可以根据range实现并发下载
|
||||
opt := &cos.ObjectGetOptions{
|
||||
ResponseContentType: "text/html",
|
||||
Range: "bytes=0-3",
|
||||
@@ -82,4 +82,11 @@ func main() {
|
||||
bs, _ = ioutil.ReadAll(resp.Body)
|
||||
resp.Body.Close()
|
||||
fmt.Printf("%s\n", string(bs))
|
||||
|
||||
// Case5 下载对象到文件,查看下载进度
|
||||
opt = &cos.ObjectGetOptions{
|
||||
Listener: &cos.DefaultProgressListener{},
|
||||
}
|
||||
_, err = c.Object.GetToFile(context.Background(), name, "test", opt)
|
||||
log_status(err)
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ func log_status(err error) {
|
||||
}
|
||||
if cos.IsNotFoundError(err) {
|
||||
// WARN
|
||||
fmt.Println("WARN: Resource is not existed")
|
||||
fmt.Println("WARN: Resource is not existed")
|
||||
} else if e, ok := cos.IsCOSError(err); ok {
|
||||
fmt.Printf("ERROR: Code: %v\n", e.Code)
|
||||
fmt.Printf("ERROR: Message: %v\n", e.Message)
|
||||
@@ -44,20 +44,19 @@ func main() {
|
||||
// Notice when put a large file and set need the request body, might happend out of memory error.
|
||||
RequestBody: false,
|
||||
ResponseHeader: true,
|
||||
ResponseBody: true,
|
||||
ResponseBody: false,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
// Case1 normal put object
|
||||
name := "test/objectPut.go"
|
||||
// Case1 上传对象
|
||||
name := "test/example"
|
||||
f := strings.NewReader("test")
|
||||
|
||||
_, err := c.Object.Put(context.Background(), name, f, nil)
|
||||
log_status(err)
|
||||
|
||||
// Case2 put object with the options
|
||||
name = "test/put_option.go"
|
||||
// Case2 使用options上传对象
|
||||
f = strings.NewReader("test xxx")
|
||||
opt := &cos.ObjectPutOptions{
|
||||
ObjectPutHeaderOptions: &cos.ObjectPutHeaderOptions{
|
||||
@@ -71,7 +70,11 @@ func main() {
|
||||
_, err = c.Object.Put(context.Background(), name, f, opt)
|
||||
log_status(err)
|
||||
|
||||
// Case3 put object by local file path
|
||||
// Case3 通过本地文件上传对象
|
||||
_, err = c.Object.PutFromFile(context.Background(), name, "./test", nil)
|
||||
log_status(err)
|
||||
|
||||
// Case4 查看上传进度
|
||||
opt.ObjectPutHeaderOptions.Listener = &cos.DefaultProgressListener{}
|
||||
_, err = c.Object.PutFromFile(context.Background(), name, "./test", opt)
|
||||
}
|
||||
|
||||
@@ -49,9 +49,26 @@ func main() {
|
||||
},
|
||||
})
|
||||
|
||||
// Case1 多线程上传对象
|
||||
opt := &cos.MultiUploadOptions{
|
||||
ThreadPoolSize: 3,
|
||||
}
|
||||
v, _, err := c.Object.Upload(
|
||||
context.Background(), "gomulput1G", "./test1G", nil,
|
||||
context.Background(), "gomulput1G", "./test1G", opt,
|
||||
)
|
||||
log_status(err)
|
||||
fmt.Println(v)
|
||||
fmt.Printf("Case1 done, %v\n", v)
|
||||
|
||||
// Case2 多线程上传对象,查看上传进度
|
||||
opt.OptIni = &cos.InitiateMultipartUploadOptions{
|
||||
nil,
|
||||
&cos.ObjectPutHeaderOptions{
|
||||
Listener: &cos.DefaultProgressListener{},
|
||||
},
|
||||
}
|
||||
v, _, err = c.Object.Upload(
|
||||
context.Background(), "gomulput1G", "./test1G", opt,
|
||||
)
|
||||
log_status(err)
|
||||
fmt.Printf("Case2 done, %v\n", v)
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ func initUpload(c *cos.Client, name string) *cos.InitiateMultipartUploadResult {
|
||||
}
|
||||
|
||||
func main() {
|
||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com")
|
||||
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com")
|
||||
b := &cos.BaseURL{BucketURL: u}
|
||||
c := cos.NewClient(b, &http.Client{
|
||||
Transport: &cos.AuthorizationTransport{
|
||||
@@ -49,20 +49,50 @@ func main() {
|
||||
SecretKey: os.Getenv("COS_SECRETKEY"),
|
||||
Transport: &debug.DebugRequestTransport{
|
||||
RequestHeader: true,
|
||||
RequestBody: true,
|
||||
RequestBody: false,
|
||||
ResponseHeader: true,
|
||||
ResponseBody: true,
|
||||
ResponseBody: false,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
optcom := &cos.CompleteMultipartUploadOptions{}
|
||||
name := "test/test_multi_upload.go"
|
||||
up := initUpload(c, name)
|
||||
uploadID := up.UploadID
|
||||
|
||||
fd, err := os.Open("test")
|
||||
if err != nil {
|
||||
fmt.Printf("Open File Error: %v\n", err)
|
||||
return
|
||||
}
|
||||
defer fd.Close()
|
||||
stat, err := fd.Stat()
|
||||
if err != nil {
|
||||
fmt.Printf("Stat File Error: %v\n", err)
|
||||
return
|
||||
}
|
||||
opt := &cos.ObjectUploadPartOptions{
|
||||
Listener: &cos.DefaultProgressListener{},
|
||||
ContentLength: int(stat.Size()),
|
||||
}
|
||||
resp, err := c.Object.UploadPart(
|
||||
context.Background(), name, uploadID, 1, fd, opt,
|
||||
)
|
||||
optcom.Parts = append(optcom.Parts, cos.Object{
|
||||
PartNumber: 1, ETag: resp.Header.Get("ETag"),
|
||||
})
|
||||
log_status(err)
|
||||
|
||||
f := strings.NewReader("test heoo")
|
||||
_, err := c.Object.UploadPart(
|
||||
context.Background(), name, uploadID, 1, f, nil,
|
||||
resp, err = c.Object.UploadPart(
|
||||
context.Background(), name, uploadID, 2, f, nil,
|
||||
)
|
||||
log_status(err)
|
||||
optcom.Parts = append(optcom.Parts, cos.Object{
|
||||
PartNumber: 2, ETag: resp.Header.Get("ETag"),
|
||||
})
|
||||
|
||||
_, _, err = c.Object.CompleteMultipartUpload(context.Background(), name, uploadID, optcom)
|
||||
log_status(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user