功能说明
在一次请求中批量删除高性能桶中的多个对象(DELETE Multiple Objects),单次最多支持 1000 个对象。对高性能桶发起请求时,SDK 通过
RapidCredentialTransport 自动完成会话鉴权。方法原型
func (s *ObjectService) DeleteMulti(ctx context.Context, opt *ObjectDeleteMultiOptions) (*ObjectDeleteMultiResult, *Response, error)
参数说明
type ObjectDeleteMultiOptions struct {Quiet boolObjects []Object}type Object struct {Key string}
参数名称 | 参数描述 | 类型 | 是否必选 |
ctx | 请求上下文,用于控制超时与取消 | context.Context | 是 |
opt | 批量删除选项,指定待删除的对象列表 | *ObjectDeleteMultiOptions | 是 |
Quiet | 结果模式。false(Verbose)返回每个对象的删除结果;true(Quiet)仅返回删除失败的对象 | bool | 否 |
Objects | 待删除的对象列表,每个 Object 通过 Key 字段指定对象键,数量为1~1000 | []Object | 是 |
返回结果说明
type ObjectDeleteMultiResult struct {DeletedObjects []ObjectErrors []struct {Key stringCode stringMessage string}}
参数名称 | 参数描述 | 类型 |
DeletedObjects | 删除成功的对象列表 | []Object |
Errors | 删除失败的对象列表,每项含 Key、Code、Message | []struct |
*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()opt := &cos.ObjectDeleteMultiOptions{Objects: []cos.Object{{Key: "a.txt"},{Key: "b.txt"},},}res, _, err := c.Object.DeleteMulti(ctx, opt)if err != nil {log.Fatalf("DeleteMulti failed: %v", err)}log.Printf("DeleteMulti OK, deleted: %d, errors: %d", len(res.DeletedObjects), len(res.Errors))}
注意事项
单次请求删除对象数量为 1~1000,超出请分批调用。
即使整体请求返回成功,仍需检查
res.Errors,其中记录了删除失败的对象及原因。将
Quiet 置为 true 可减少返回内容,仅返回删除失败的对象信息。