日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Go拷貝對(duì)象

更新時(shí)間:

本文介紹如何使用Go SDK V2CopyObject方法,將源Bucket中的對(duì)象(5GiB 以下)拷貝到同一地域下相同或不同目標(biāo)Bucket中。

注意事項(xiàng)

  • 本文示例代碼以華東1(杭州)的地域IDcn-hangzhou為例,默認(rèn)使用外網(wǎng)Endpoint,如果您希望通過(guò)與OSS同地域的其他阿里云產(chǎn)品訪問(wèn)OSS,請(qǐng)使用內(nèi)網(wǎng)Endpoint。關(guān)于OSS支持的RegionEndpoint的對(duì)應(yīng)關(guān)系,請(qǐng)參見(jiàn)OSS地域和訪問(wèn)域名。

  • 本文以從環(huán)境變量讀取訪問(wèn)憑證為例。如何配置訪問(wèn)憑證,請(qǐng)參見(jiàn)配置訪問(wèn)憑證

  • 要進(jìn)行拷貝文件,您必須擁有源文件的讀權(quán)限及目標(biāo)Bucket的讀寫(xiě)權(quán)限。

  • 不支持跨地域拷貝。例如不能將華東1(杭州)地域存儲(chǔ)空間中的文件拷貝到華北1(青島)地域。

  • 拷貝文件時(shí),您需要確保源Bucket和目標(biāo)Bucket均未設(shè)置合規(guī)保留策略,否則報(bào)錯(cuò)The object you specified is immutable.。

方法定義

func (c *Client) CopyObject(ctx context.Context, request *CopyObjectRequest, optFns ...func(*Options)) (*CopyObjectResult, error)

請(qǐng)求參數(shù)列表

參數(shù)名

類(lèi)型

說(shuō)明

ctx

context.Context

請(qǐng)求的上下文,可以用來(lái)設(shè)置請(qǐng)求的總時(shí)限

request

*CopyObjectRequest

設(shè)置具體接口的請(qǐng)求參數(shù),具體請(qǐng)參見(jiàn)CopyObjectRequest

optFns

...func(*Options)

(可選)配置選項(xiàng),具體請(qǐng)參見(jiàn)Options

其中,CopyObjectRequest的常用參數(shù)列舉如下:

參數(shù)名

類(lèi)型

說(shuō)明

Bucket

*string

指定目標(biāo)存儲(chǔ)空間名稱(chēng)

Key

*string

指定目標(biāo)對(duì)象名稱(chēng)

SourceBucket

*string

指定源存儲(chǔ)空間名稱(chēng)

SourceKey

*string

指定源對(duì)象名稱(chēng)

ForbidOverwrite

*string

指定CopyObject操作時(shí)是否覆蓋同名目標(biāo)Object

Tagging

*string

指定Object的對(duì)象標(biāo)簽,可同時(shí)設(shè)置多個(gè)標(biāo)簽,例如TagA=A&TagB=B。

TaggingDirective

*string

指定如何設(shè)置目標(biāo)Object的對(duì)象標(biāo)簽。取值如下:

  • Copy(默認(rèn)值):復(fù)制源Object的對(duì)象標(biāo)簽到目標(biāo) Object。

  • Replace:忽略源Object的對(duì)象標(biāo)簽,直接采用請(qǐng)求中指定的對(duì)象標(biāo)簽。

返回值列表

返回值名

類(lèi)型

說(shuō)明

result

*CopyObjectResult

接口返回值,當(dāng) err 為nil 時(shí)有效,具體請(qǐng)參見(jiàn)CopyObjectResult

err

error

請(qǐng)求的狀態(tài),當(dāng)請(qǐng)求失敗時(shí),err 不為 nil

示例代碼

您可以使用以下代碼將小于5GiB的對(duì)象從源存儲(chǔ)空間拷貝到目標(biāo)存儲(chǔ)空間。

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// 定義全局變量
var (
	region         string // 存儲(chǔ)區(qū)域
	srcBucketName  string // 源存儲(chǔ)空間名稱(chēng)
	srcObjectName  string // 源對(duì)象名稱(chēng)
	destBucketName string // 目標(biāo)存儲(chǔ)空間名稱(chēng)
	destObjectName string // 目標(biāo)對(duì)象名稱(chēng)
)

// init函數(shù)用于初始化命令行參數(shù)
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&srcBucketName, "src-bucket", "", "The name of the source bucket.")
	flag.StringVar(&srcObjectName, "src-object", "", "The name of the source object.")
	flag.StringVar(&destBucketName, "dest-bucket", "", "The name of the destination bucket.")
	flag.StringVar(&destObjectName, "dest-object", "", "The name of the destination object.")
}

func main() {
	// 解析命令行參數(shù)
	flag.Parse()

	// 檢查源bucket名稱(chēng)是否為空
	if len(srcBucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, source bucket name required")
	}

	// 檢查region是否為空
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// 如果目標(biāo)bucket名稱(chēng)未指定,則使用源bucket名稱(chēng)
	if len(destBucketName) == 0 {
		destBucketName = srcBucketName
	}

	// 檢查源object名稱(chēng)是否為空
	if len(srcObjectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, source object name required")
	}

	// 檢查目標(biāo)object名稱(chēng)是否為空
	if len(destObjectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, destination object name required")
	}

	// 加載默認(rèn)配置并設(shè)置憑證提供者和區(qū)域
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// 創(chuàng)建OSS客戶(hù)端
	client := oss.NewClient(cfg)

	// 創(chuàng)建復(fù)制對(duì)象請(qǐng)求
	request := &oss.CopyObjectRequest{
		Bucket:       oss.Ptr(destBucketName), // 目標(biāo)存儲(chǔ)空間名稱(chēng)
		Key:          oss.Ptr(destObjectName), // 目標(biāo)對(duì)象名稱(chēng)
		SourceKey:    oss.Ptr(srcObjectName),  // 源對(duì)象名稱(chēng)
		SourceBucket: oss.Ptr(srcBucketName),  // 源存儲(chǔ)空間名稱(chēng)
	}

	// 執(zhí)行復(fù)制對(duì)象操作并處理結(jié)果
	result, err := client.CopyObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to copy object %v", err)
	}
	log.Printf("copy object result:%#v\n", result)
}

相關(guān)文檔

  • 關(guān)于拷貝對(duì)象的完整示例代碼,請(qǐng)參見(jiàn)GitHub示例。

  • 關(guān)于拷貝對(duì)象的API接口,請(qǐng)參見(jiàn)CopyObject。