github.com/qiniu/go-sdk/v7@v7.27.0/examples/rs_batch_move/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/qiniu/go-sdk/v7/auth" 8 "github.com/qiniu/go-sdk/v7/storage" 9 ) 10 11 var ( 12 accessKey = os.Getenv("QINIU_ACCESS_KEY") 13 secretKey = os.Getenv("QINIU_SECRET_KEY") 14 bucket = os.Getenv("QINIU_TEST_BUCKET") 15 ) 16 17 func main() { 18 mac := auth.New(accessKey, secretKey) 19 20 cfg := storage.Config{ 21 // 是否使用https域名进行资源管理 22 UseHTTPS: false, 23 } 24 // 指定空间所在的区域,如果不指定将自动探测 25 // 如果没有特殊需求,默认不需要指定 26 // cfg.Zone=&storage.ZoneHuabei 27 bucketManager := storage.NewBucketManager(mac, &cfg) 28 29 // 每个batch的操作数量不可以超过1000个,如果总数量超过1000,需要分批发送 30 srcBucket := bucket 31 destBucket := bucket 32 force := true 33 moveKeys := map[string]string{ 34 "github1.png": "github1-move.png", 35 "github2.png": "github2-move.png", 36 "github3.png": "github3-move.png", 37 "github4.png": "github4-move.png", 38 "github5.png": "github5-move.png", 39 } 40 moveOps := make([]string, 0, len(moveKeys)) 41 for srcKey, destKey := range moveKeys { 42 moveOps = append(moveOps, storage.URIMove(srcBucket, srcKey, destBucket, destKey, force)) 43 } 44 rets, err := bucketManager.Batch(moveOps) 45 if err != nil { 46 // 遇到错误 47 if _, ok := err.(*storage.ErrorInfo); ok { 48 for _, ret := range rets { 49 // 200 为成功 50 fmt.Printf("%d\n", ret.Code) 51 if ret.Code != 200 { 52 fmt.Printf("%s\n", ret.Data.Error) 53 } 54 } 55 } else { 56 fmt.Printf("batch error, %s", err) 57 } 58 } else { 59 // 完全成功 60 for _, ret := range rets { 61 // 200 为成功 62 fmt.Printf("%d\n", ret.Code) 63 fmt.Printf("%v\n", ret.Data) 64 } 65 } 66 }