帮你快速理解、总结文档立即下载

重命名对象

最近更新时间:2026-10-21 18:34:06
我的收藏

功能说明

在同一高性能桶内原子重命名对象。该操作仅修改对象键,不搬移底层数据,是高性能桶专属能力。对高性能桶发起请求时,SDK 通过 RapidCredentialTransport 自动完成会话鉴权。

方法原型

func (s *ObjectService) RenameObject(ctx context.Context, name, renameSource string, opt *ObjectRenameOptions) (*Response, error)

参数说明

type ObjectRenameOptions struct {
XCosForbidOverwrite string
}
参数名称
参数描述
类型
是否必选
ctx
请求上下文,用于控制超时与取消
context.Context
是
name
目标对象键(Object Key)
string
是
renameSource
源对象键(Object Key),SDK 内部自动补前导 / 并进行 URL 编码
string
是
opt
重命名选项,可为 nil
*ObjectRenameOptions
否
XCosForbidOverwrite
防覆盖头。置为 "true" 时,若目标对象已存在则拒绝重命名
string
否

返回结果说明

参数名称
参数描述
类型
*Response
响应对象
*cos.Response
error
错误信息,成功时为 nil
error

使用案例

package main

import (
"context"
"log"
"net/http"
"net/url"
"os"
"time"

"github.com/tencentyun/cos-go-sdk-v5"
)

func main() {
u, _ := url.Parse("https://examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
base := &cos.AuthorizationTransport{
SecretID: os.Getenv("SECRETID"),
SecretKey: os.Getenv("SECRETKEY"),
}
c := cos.NewClient(b, &http.Client{
Transport: cos.NewRapidCredentialTransport(base),
Timeout: 30 * time.Second,
})

ctx := context.Background()
name := "newname.txt"
renameSource := "oldname.txt"

opt := &cos.ObjectRenameOptions{
XCosForbidOverwrite: "true",
}
_, err := c.Object.RenameObject(ctx, name, renameSource, opt)
if err != nil {
log.Fatalf("RenameObject failed: %v", err)
}
log.Println("RenameObject OK")
}

注意事项

该操作为原子重命名,不搬移底层数据,仅高性能桶支持。普通桶调用会在本地 fail-fast 直接返回错误,请改用 Copy + Delete 实现重命名。
name 为目标 key,renameSource 为同桶内的源 key,二者均不能为空或为 /。
将 XCosForbidOverwrite 置为 "true" 可防止覆盖已存在的目标对象。
错误处理方式请参见 异常处理。