有奖捉虫:云通信与企业服务文档专题,速来> HOT

简介

本文档提供关于对象的删除操作相关的 API 概览以及 SDK 示例代码。
API
操作名
操作描述
删除单个对象
在存储桶中删除指定对象
删除多个对象
在存储桶中批量删除对象

删除单个对象

功能说明

在 Bucket 中删除指定 Object (对象/文件夹)。

方法原型

func (s *ObjectService) Delete(ctx context.Context, key string) (*Response, error)

请求示例1:删除对象

package main

import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
"os"
)

func main() {
// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
// 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
// 通过环境变量获取密钥
// 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
key := "exampleobject"
_, err := client.Object.Delete(context.Background(), key)
if err != nil {
panic(err)
}
}

请求示例2:删除文件夹

该请求不会删除文件夹内的对象,只会删除指定的 key。
package main

import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
"os"
)

func main() {
// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
// 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
// 通过环境变量获取密钥
// 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
key := "folder/"
_, err := client.Object.Delete(context.Background(), key)
if err != nil {
panic(err)
}
}

参数说明

参数名称
参数描述
类型
是否必填
key
对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg中,对象键为 doc/pic.jpg
string

删除多个对象

功能说明

在 Bucket 中删除多个 Object (文件/对象)。单次请求最大支持批量删除1000个 Object。

方法原型

func (s *ObjectService) DeleteMulti(ctx context.Context, opt *ObjectDeleteMultiOptions) (*ObjectDeleteMultiResult, *Response, error)

请求示例1:删除多个指定对象

package main

import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
"os"
)

func main() {
// 存储桶名称,由 bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
// 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
// 通过环境变量获取密钥
// 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
var objects []string
objects = append(objects, []string{"a", "b", "c"}...)
obs := []cos.Object{}
for _, v := range objects {
obs = append(obs, cos.Object{Key: v})
}
opt := &cos.ObjectDeleteMultiOptions{
Objects: obs,
// 布尔值,这个值决定了是否启动 Quiet 模式
// 值为 true 启动 Quiet 模式,值为 false 则启动 Verbose 模式,默认值为 false
// Quiet: true,
}

_, _, err := client.Object.DeleteMulti(context.Background(), opt)
if err != nil {
panic(err)
}
}

请求示例2:删除文件夹及其文件

COS 上的文件夹概念是以 '/' 分隔对象名,形成类似文件系统的路径,从而模拟出来的。所以删除文件夹的操作,在 COS 上相当于删除一批有着同样前缀的对象。例如:文件夹 'prefix/' ,代表的是以 'prefix/' 为前缀的所有对象,所以删除 'prefix/',意味着删除以 'prefix/' 为前缀的所有对象。 目前 COS Go SDK 没有提供一个接口去支持这样的操作,但是可以通过基本操作的组合,达到同样的效果。
package main

import (
"context"
"github.com/tencentyun/cos-go-sdk-v5"
"net/http"
"net/url"
"os"
)

func main() {
// 存储桶名称,由bucketname-appid 组成,appid 必须填入,可以在 COS 控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
// 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.cloud.tencent.com/ ,关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 。
u, _ := url.Parse("https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
client := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
// 通过环境变量获取密钥
// 环境变量 SECRETID 表示用户的 SecretId,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
// 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.cloud.tencent.com/cam/capi
SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
},
})
dir := "exampledir/"
var marker string
opt := &cos.BucketGetOptions{
Prefix: dir,
MaxKeys: 1000,
}
isTruncated := true
for isTruncated {
opt.Marker = marker
v, _, err := client.Bucket.Get(context.Background(), opt)
if err != nil {
// Error
break
}
for _, content := range v.Contents {
_, err = client.Object.Delete(context.Background(), content.Key)
if err != nil {
// Error
}
}
isTruncated = v.IsTruncated
marker = v.NextMarker
}
}

参数说明

type ObjectDeleteMultiOptions struct {
Quiet bool
Objects []Object
}
// Object保存了对象的元信息
type Object struct {
Key string
// 其他参数与这个API不相关
}
参数名称
参数描述
类型
是否必填
Quiet
布尔值,这个值决定了是否启动 Quiet 模式。对于响应结果,COS 提供 Verbose 和 Quiet 两种模式:
Verbose 模式将返回每个 Object 的删除结果
Quiet 模式只返回报错的 Object 信息
值为 true 启动 Quiet 模式,值为 false 则启动 Verbose 模式,默认值为 false
Boolean
Objects
说明每个将要删除的目标 Object 信息
Container
Key
目标 Object 文件名称
String

返回结果说明

上传文件的属性:
// ObjectDeleteMultiResult 保存 DeleteMulti 的结果
type ObjectDeleteMultiResult struct {
DeletedObjects []Object
Errors []struct {
Key string
Code string
Message string
}
}
参数名称
参数描述
类型
DeletedObjects
说明每个将要删除的目标 Object 信息
Container
Errors
说明本次删除的失败 Object 信息
Container
Key
删除失败的 Object 的名称
string
Code
删除失败的错误代码
string
Message
删除失败的错误信息
string