API | 操作名 | 操作描述 |
删除单个对象 | 在存储桶中删除指定对象 | |
删除多个对象 | 在存储桶中批量删除对象 |
// 创建 COSClient 实例,这个实例用来后续调用请求COSClient createCOSClient() {// 设置用户身份信息。// SECRETID 和 SECRETKEY 请登录访问管理控制台 https://console.tencentcloud.com/cam/capi 进行查看和管理String secretId = System.getenv("secretId");//用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1String secretKey = System.getenv("secretKey");//用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://www.tencentcloud.com/document/product/598/37140?from_cn_redirect=1COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);// ClientConfig 中包含了后续请求 COS 的客户端设置:ClientConfig clientConfig = new ClientConfig();// 设置 bucket 的地域// COS_REGION 请参见 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1clientConfig.setRegion(new Region("COS_REGION"));// 设置请求协议, http 或者 https// 5.6.53 及更低的版本,建议设置使用 https 协议// 5.6.54 及更高版本,默认使用了 httpsclientConfig.setHttpProtocol(HttpProtocol.https);// 以下的设置,是可选的:// 设置 socket 读取超时,默认 30sclientConfig.setSocketTimeout(30*1000);// 设置建立连接超时,默认 30sclientConfig.setConnectionTimeout(30*1000);// 如果需要的话,设置 http 代理,ip 以及 portclientConfig.setHttpProxyIp("httpProxyIp");clientConfig.setHttpProxyPort(80);// 生成 cos 客户端。return new COSClient(cred, clientConfig);}
// 创建 COSClient 实例,这个实例用来后续调用请求COSClient createCOSClient() {// 这里需要已经获取到临时密钥的结果。// 临时密钥的生成参见 https://www.tencentcloud.com/document/product/436/14048String tmpSecretId = "TMPSECRETID";String tmpSecretKey = "TMPSECRETKEY";String sessionToken = "SESSIONTOKEN";COSCredentials cred = new BasicSessionCredentials(tmpSecretId, tmpSecretKey, sessionToken);// ClientConfig 中包含了后续请求 COS 的客户端设置:ClientConfig clientConfig = new ClientConfig();// 设置 bucket 的地域// COS_REGION 请参见 https://www.tencentcloud.com/document/product/436/6224?from_cn_redirect=1clientConfig.setRegion(new Region("COS_REGION"));// 设置请求协议, http 或者 https// 5.6.53 及更低的版本,建议设置使用 https 协议// 5.6.54 及更高版本,默认使用了 httpsclientConfig.setHttpProtocol(HttpProtocol.https);// 以下的设置,是可选的:// 设置 socket 读取超时,默认 30sclientConfig.setSocketTimeout(30*1000);// 设置建立连接超时,默认 30sclientConfig.setConnectionTimeout(30*1000);// 如果需要的话,设置 http 代理,ip 以及 portclientConfig.setHttpProxyIp("httpProxyIp");clientConfig.setHttpProxyPort(80);// 生成 cos 客户端。return new COSClient(cred, clientConfig);}
public void deleteObject(String bucketName, String key)throws CosClientException, CosServiceException;
// 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建// 详细代码参见本页:简单操作 -> 创建 COSClientCOSClient cosClient = createCOSClient();// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式String bucketName = "examplebucket-1250000000";// 对象键(Key)是对象在存储桶中的唯一标识。详情请参见 [对象键](https://www.tencentcloud.com/document/product/436/13324)String key = "exampleobject";try {cosClient.deleteObject(bucketName, key);} catch (CosServiceException e) {e.printStackTrace();} catch (CosClientException e) {e.printStackTrace();}// 确认本进程不再使用 cosClient 实例之后,关闭之cosClient.shutdown();
public DeleteObjectsResult deleteObjects(DeleteObjectsRequest deleteObjectsRequest)throws MultiObjectDeleteException, CosClientException, CosServiceException;
// 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建// 详细代码参见本页:简单操作 -> 创建 COSClientCOSClient cosClient = createCOSClient();// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式String bucketName = "examplebucket-1250000000";DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketName);// 设置要删除的key列表, 最多一次删除1000个ArrayList<KeyVersion> keyList = new ArrayList<>();// 传入要删除的文件名// 注意文件名不允许以正斜线/或者反斜线\\开头,例如:// 存储桶目录下有a/b/c.txt文件,如果要删除,只能是 keyList.add(new KeyVersion("a/b/c.txt")), 若使用 keyList.add(new KeyVersion("/a/b/c.txt"))会导致删除不成功keyList.add(new KeyVersion("aaa"));keyList.add(new KeyVersion("bbb"));keyList.add(new KeyVersion("ccc"));deleteObjectsRequest.setKeys(keyList);try {DeleteObjectsResult deleteObjectsResult = cosClient.deleteObjects(deleteObjectsRequest);List<DeletedObject> deleteObjectResultArray = deleteObjectsResult.getDeletedObjects();} catch (MultiObjectDeleteException mde) {// 如果部分删除成功部分失败, 返回 MultiObjectDeleteExceptionList<DeletedObject> deleteObjects = mde.getDeletedObjects();List<DeleteError> deleteErrors = mde.getErrors();} catch (CosServiceException e) {e.printStackTrace();} catch (CosClientException e) {e.printStackTrace();}// 确认本进程不再使用 cosClient 实例之后,关闭之cosClient.shutdown();
参数名称 | 描述 | 类型 |
deleteObjectsRequest | 请求 | DeleteObjectsRequest |
参数名称 | 描述 | 类型 |
bucketName | Bucket 的命名格式为 BucketName-APPID ,详情请参见 命名规范 | String |
quiet | 指明删除的返回结果方式,可选值为 true,false,默认为 false。设置为 true 只返回失败的错误信息,设置为 false 时返回成功和失败的所有信息 | boolean |
keys | 对象路径列表,对象的版本号为可选 | List<DeleteObjectsRequest.KeyVersion> |
参数名称 | 描述 | 类型 |
key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/picture.jpg 中,对象键为 doc/picture.jpg,详情请参见 对象键 | String |
version | 在开启存储桶版本控制时,指定被删除对象的版本号,可选 | String |
public DeleteObjectsResult deleteObjects(DeleteObjectsRequest deleteObjectsRequest)throws MultiObjectDeleteException, CosClientException, CosServiceException;
// 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建// 详细代码参见本页:简单操作 -> 创建 COSClientCOSClient cosClient = createCOSClient();// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式String bucketName = "examplebucket-1250000000";DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketName);// 设置要删除的 key 列表, 最多一次删除1000个ArrayList<KeyVersion> keyList = new ArrayList<>();// 传入要删除的文件名和对应的版本号// 版本号可以通过:列出对象 -> 简单操作 -> 列出对象历史版本 查到keyList.add(new KeyVersion("aaa", "aaa versionId"));keyList.add(new KeyVersion("bbb", "bbb versionId"));keyList.add(new KeyVersion("ccc", "ccc versionId"));deleteObjectsRequest.setKeys(keyList);try {DeleteObjectsResult deleteObjectsResult = cosClient.deleteObjects(deleteObjectsRequest);List<DeletedObject> deleteObjectResultArray = deleteObjectsResult.getDeletedObjects();} catch (MultiObjectDeleteException mde) {// 如果部分删除成功部分失败, 返回 MultiObjectDeleteExceptionList<DeletedObject> deleteObjects = mde.getDeletedObjects();List<DeleteError> deleteErrors = mde.getErrors();} catch (CosServiceException e) {e.printStackTrace();} catch (CosClientException e) {e.printStackTrace();}// 确认本进程不再使用 cosClient 实例之后,关闭之cosClient.shutdown();
参数名称 | 描述 | 类型 |
deleteObjectsRequest | 请求 | DeleteObjectsRequest |
参数名称 | 描述 | 类型 |
bucketName | Bucket 的命名格式为 BucketName-APPID ,详情请参见 命名规范 | String |
quiet | 指明删除的返回结果方式,可选值为 true,false,默认为 false。设置为 true 只返回失败的错误信息,设置为 false 时返回成功和失败的所有信息 | boolean |
keys | 对象路径列表,对象的版本号为可选 | List<DeleteObjectsRequest.KeyVersion> |
参数名称 | 描述 | 类型 |
key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/picture.jpg 中,对象键为 doc/picture.jpg,详情请参见 对象键 | String |
version | 在开启存储桶版本控制时,指定被删除对象的版本号,可选 | String |
// 列目录实现参考:列出对象 -> 简单操作 -> 列出目录下的对象和子目录// 批量删除实现参考本页:批量删除对象// 调用 COS 接口之前必须保证本进程存在一个 COSClient 实例,如果没有则创建// 详细代码参见本页:简单操作 -> 创建 COSClientCOSClient cosClient = createCOSClient();// 存储桶的命名格式为 BucketName-APPID,此处填写的存储桶名称必须为此格式String bucketName = "examplebucket-1250000000";// 要删除的目录,这里是相对于 bucket 的路径String delDir = "exampledir";ListObjectsRequest listObjectsRequest = new ListObjectsRequest();// 设置 bucket 名称listObjectsRequest.setBucketName(bucketName);// prefix 表示列出的对象名以 prefix 为前缀// 这里填要列出的目录的相对 bucket 的路径listObjectsRequest.setPrefix(delDir);// 设置最大遍历出多少个对象, 一次 listobject 最大支持1000listObjectsRequest.setMaxKeys(1000);// 保存每次列出的结果ObjectListing objectListing = null;do {try {objectListing = cosClient.listObjects(listObjectsRequest);} catch (CosServiceException e) {e.printStackTrace();return;} catch (CosClientException e) {e.printStackTrace();return;}// 这里保存列出的对象列表List<COSObjectSummary> cosObjectSummaries = objectListing.getObjectSummaries();ArrayList<KeyVersion> delObjects = new ArrayList<KeyVersion>();for (COSObjectSummary cosObjectSummary : cosObjectSummaries) {delObjects.add(new KeyVersion(cosObjectSummary.getKey()));}DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(bucketName);deleteObjectsRequest.setKeys(delObjects);try {DeleteObjectsResult deleteObjectsResult = cosClient.deleteObjects(deleteObjectsRequest);List<DeletedObject> deleteObjectResultArray = deleteObjectsResult.getDeletedObjects();} catch (MultiObjectDeleteException mde) {// 如果部分删除成功部分失败, 返回 MultiObjectDeleteExceptionList<DeletedObject> deleteObjects = mde.getDeletedObjects();List<DeleteError> deleteErrors = mde.getErrors();} catch (CosServiceException e) {e.printStackTrace();return;} catch (CosClientException e) {e.printStackTrace();return;}// 标记下一次开始的位置String nextMarker = objectListing.getNextMarker();listObjectsRequest.setMarker(nextMarker);} while (objectListing.isTruncated());
本页内容是否解决了您的问题?