控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

诚邀爱技术、爱分享的你,成为文档内容共建者> HOT

简介

本文档提供关于对象的删除操作相关的 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.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"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.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.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"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.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.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"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.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.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"),
            // 环境变量 SECRETKEY 表示用户的 SecretKey,登录访问管理控制台查看密钥,https://console.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
    目录