tencent cloud

文档反馈

删除对象

最后更新时间:2022-03-21 14:20:53

    简介

    本文档提供关于对象的删除操作相关的 API 概览以及 SDK 示例代码。

    API 操作名 操作描述
    DELETE Object 删除单个对象 在存储桶中删除指定对象
    DELETE Multiple Objects 删除多个对象 在存储桶中批量删除对象

    删除单个对象

    功能说明

    在 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.intl.cloud.tencent.com/cos5/bucket
       // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.intl.cloud.tencent.com/ ,关于地域的详情见 https://intl.cloud.tencent.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.intl.cloud.tencent.com/cam/capi
               SecretID: os.Getenv("SECRETID"),
               // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.intl.cloud.tencent.com/cam/capi
               SecretKey: os.Getenv("SECRETKEY"),
           },
       })
       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.intl.cloud.tencent.com/cos5/bucket
      // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.intl.cloud.tencent.com/ ,关于地域的详情见 https://intl.cloud.tencent.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.intl.cloud.tencent.com/cam/capi
              SecretID: os.Getenv("SECRETID"),
              // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.intl.cloud.tencent.com/cam/capi
              SecretKey: os.Getenv("SECRETKEY"),
          },
      })
      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.intl.cloud.tencent.com/cos5/bucket
       // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.intl.cloud.tencent.com/ ,关于地域的详情见 https://intl.cloud.tencent.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.intl.cloud.tencent.com/cam/capi
               SecretID: os.Getenv("SECRETID"),
               // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.intl.cloud.tencent.com/cam/capi
               SecretKey: os.Getenv("SECRETKEY"),
           },
       })
       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.intl.cloud.tencent.com/cos5/bucket
      // 替换为用户的 region,存储桶region可以在COS控制台“存储桶概览”查看 https://console.intl.cloud.tencent.com/ ,关于地域的详情见 https://intl.cloud.tencent.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.intl.cloud.tencent.com/cam/capi
              SecretID: os.Getenv("SECRETID"),
              // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.intl.cloud.tencent.com/cam/capi
              SecretKey: os.Getenv("SECRETKEY"),
          },
      })
      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 电话支持