tencent cloud

文档反馈

删除对象

最后更新时间:2024-01-05 17:20:37

    简介

    本文档提供关于对象的删除操作相关的 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.tencentcloud.com/cos5/bucket
    // 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.tencentcloud.com/ ,关于地域的详情见 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1 。
    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.tencentcloud.com/cam/capi
    SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.tencentcloud.com/cam/capi
    SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    },
    })
    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.tencentcloud.com/cos5/bucket
    // 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.tencentcloud.com/ ,关于地域的详情见 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1 。
    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.tencentcloud.com/cam/capi
    SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.tencentcloud.com/cam/capi
    SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    },
    })
    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.tencentcloud.com/cos5/bucket
    // 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.tencentcloud.com/ ,关于地域的详情见 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1 。
    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.tencentcloud.com/cam/capi
    SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.tencentcloud.com/cam/capi
    SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    },
    })
    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.tencentcloud.com/cos5/bucket
    // 替换为用户的 region,存储桶 region 可以在 COS 控制台“存储桶概览”查看 https://console.tencentcloud.com/ ,关于地域的详情见 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1 。
    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.tencentcloud.com/cam/capi
    SecretID: os.Getenv("SECRETID"), // 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.tencentcloud.com/cam/capi
    SecretKey: os.Getenv("SECRETKEY"), // 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1
    },
    })
    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
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持