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  }