本文档提供关于对象的删除操作相关的 API 概览以及 SDK 示例代码。
API | 操作名 | 操作描述 |
---|---|---|
DELETE Object | 删除单个对象 | 在存储桶中删除指定对象 |
DELETE Multiple Objects | 删除多个对象 | 在存储桶中批量删除对象 |
SDK 所有接口的具体参数与方法说明,请参考 SDK API。
删除指定的对象(DELETE Object)。
try
{
// 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.intl.cloud.tencent.com/developer
string bucket = "examplebucket-1250000000";
string key = "exampleobject"; //对象键
DeleteObjectRequest request = new DeleteObjectRequest(bucket, key);
//执行请求
DeleteObjectResult result = cosXml.DeleteObject(request);
//请求成功
Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
//请求失败
Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
//请求失败
Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}
说明:更多完整示例,请前往 GitHub 查看。
批量删除多个对象(DELETE Multiple Objects)。
try
{
// 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.intl.cloud.tencent.com/developer
string bucket = "examplebucket-1250000000";
DeleteMultiObjectRequest request = new DeleteMultiObjectRequest(bucket);
//设置返回结果形式
request.SetDeleteQuiet(false);
//对象key
string key = "exampleobject"; //对象键
List<string> objects = new List<string>();
objects.Add(key);
request.SetObjectKeys(objects);
//执行请求
DeleteMultiObjectResult result = cosXml.DeleteMultiObjects(request);
//请求成功
Console.WriteLine(result.GetResultInfo());
}
catch (COSXML.CosException.CosClientException clientEx)
{
//请求失败
Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
//请求失败
Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}
说明:更多完整示例,请前往 GitHub 查看。
指定前缀删除可以实现类似于删除目录的功能。
对象存储中本身是没有目录的概念的,为了满足用户使用习惯,用户可通过分隔符/来模拟“目录”。
删除目录及其文件这一场景,实际在 COS 上相当于删除一批有着同样前缀的对象。目前 COS .NET SDK 没有提供一个接口去实现这样的操作,但是可以通过组合查询对象列表加上批量删除对象的基本操作,达到删除文件夹下对象的目的。
try
{
String nextMarker = null;
// 循环请求直到没有下一页数据
do
{
// 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.intl.cloud.tencent.com/developer
string bucket = "examplebucket-1250000000";
string prefix = "folder1/"; //指定前缀
GetBucketRequest listRequest = new GetBucketRequest(bucket);
//获取 folder1/ 下的所有对象以及子目录
listRequest.SetPrefix(prefix);
listRequest.SetMarker(nextMarker);
//执行列出对象请求
GetBucketResult listResult = cosXml.GetBucket(listRequest);
ListBucket info = listResult.listBucket;
// 对象列表
List<ListBucket.Contents> objects = info.contentsList;
// 下一页的下标
nextMarker = info.nextMarker;
DeleteMultiObjectRequest deleteRequest = new DeleteMultiObjectRequest(bucket);
//设置返回结果形式
deleteRequest.SetDeleteQuiet(false);
//对象列表
List<string> deleteObjects = new List<string>();
foreach (var content in objects)
{
deleteObjects.Add(content.key);
}
deleteRequest.SetObjectKeys(deleteObjects);
//执行批量删除请求
DeleteMultiObjectResult deleteResult = cosXml.DeleteMultiObjects(deleteRequest);
//打印请求结果
Console.WriteLine(deleteResult.GetResultInfo());
} while (nextMarker != null);
}
catch (COSXML.CosException.CosClientException clientEx)
{
//请求失败
Console.WriteLine("CosClientException: " + clientEx);
}
catch (COSXML.CosException.CosServerException serverEx)
{
//请求失败
Console.WriteLine("CosServerException: " + serverEx.GetInfo());
}
说明:更多完整示例,请前往 GitHub 查看。
本页内容是否解决了您的问题?