tencent cloud

文档反馈

删除对象

最后更新时间:2022-01-24 12:37:08

    简介

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

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

    SDK API 参考

    SDK 所有接口的具体参数与方法说明,请参考 SDK API 参考

    删除单个对象

    功能说明

    删除指定的对象(DELETE Object)。

    示例代码

    String bucket = "examplebucket-1250000000"; //存储桶名称,格式:BucketName-APPID
    String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即对象键
    DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest(bucket,
           cosPath);
    cosXmlService.deleteObjectAsync(deleteObjectRequest,
           new CosXmlResultListener() {
       @Override
       public void onSuccess(CosXmlRequest cosXmlRequest, CosXmlResult result) {
           DeleteObjectResult deleteObjectResult = (DeleteObjectResult) result;
       }
        // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
       // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
       @Override
       public void onFail(CosXmlRequest cosXmlRequest,
                          @Nullable CosXmlClientException clientException,
                          @Nullable CosXmlServiceException serviceException) {
           if (clientException != null) {
               clientException.printStackTrace();
           } else {
               serviceException.printStackTrace();
           }
       }
    });
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    删除多个对象

    功能说明

    批量删除多个对象(Delete Multi Objects)。

    示例代码

    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.tencentcloud.com/cos5/bucket
    String bucket = "examplebucket-1250000000";
    List<String> objectList = new ArrayList<String>();
    objectList.add("exampleobject1"); //对象在存储桶中的位置标识符,即对象键
    objectList.add("exampleobject2"); //对象在存储桶中的位置标识符,即对象键
    DeleteMultiObjectRequest deleteMultiObjectRequest =
           new DeleteMultiObjectRequest(bucket, objectList);
    // Quiet 模式只返回报错的 Object 信息。否则返回每个 Object 的删除结果。
    deleteMultiObjectRequest.setQuiet(true);
    cosXmlService.deleteMultiObjectAsync(deleteMultiObjectRequest,
           new CosXmlResultListener() {
       @Override
       public void onSuccess(CosXmlRequest cosXmlRequest, CosXmlResult result) {
           DeleteMultiObjectResult deleteMultiObjectResult =
                   (DeleteMultiObjectResult) result;
       }
        // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
       // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
       @Override
       public void onFail(CosXmlRequest cosXmlRequest,
                          @Nullable CosXmlClientException clientException,
                          @Nullable CosXmlServiceException serviceException) {
           if (clientException != null) {
               clientException.printStackTrace();
           } else {
               serviceException.printStackTrace();
           }
       }
    });
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    删除目录

    功能说明

    COS 上的文件夹概念是以 '/' 分隔对象名,形成类似文件系统的路径,从而模拟出来的。所以删除文件夹的操作,在 COS 上相当于删除一批有着同样前缀的对象。例如:文件夹 'prefix/' ,代表的是以 'prefix/' 为前缀的所有对象,所以删除 'prefix/' 意味着删除以 'prefix/' 为前缀的所有对象。

    目前 COS Android SDK 没有提供一个接口去支持这样的操作,但是可以通过基本操作的组合,达到同样的效果。

    示例代码

    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.tencentcloud.com/cos5/bucket
    String bucket = "examplebucket-1250000000";
    String prefix = "folder1/"; //指定前缀
    GetBucketRequest getBucketRequest = new GetBucketRequest(bucket);
    getBucketRequest.setPrefix(prefix);
    // prefix表示要删除的文件夹
    getBucketRequest.setPrefix(prefix);
    // 设置最大遍历出多少个对象, 一次listobject最大支持1000
    getBucketRequest.setMaxKeys(1000);
    GetBucketResult getBucketResult = null;
    do {
       try {
           getBucketResult = cosXmlService.getBucket(getBucketRequest);
           List<ListBucket.Contents> contents = getBucketResult.listBucket.contentsList;
           DeleteMultiObjectRequest deleteMultiObjectRequest = new DeleteMultiObjectRequest(bucket);
           for (ListBucket.Contents content : contents) {
               deleteMultiObjectRequest.setObjectList(content.key);
           }
           cosXmlService.deleteMultiObject(deleteMultiObjectRequest);
           getBucketRequest.setMarker(getBucketResult.listBucket.nextMarker);
       } catch (CosXmlClientException e) {
           e.printStackTrace();
           return;
       } catch (CosXmlServiceException e) {
           e.printStackTrace();
           return;
       }
    } while (getBucketResult.listBucket.isTruncated);
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    联系我们

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

    技术支持

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

    7x24 电话支持