功能说明
在同一高性能桶内原子重命名对象。该操作仅修改对象键,不搬移底层数据,是高性能桶专属能力。对高性能桶发起请求时,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 mainimport ("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" 可防止覆盖已存在的目标对象。