本文介绍如何单个或者批量删除文件。
警告
请您谨慎使用删除操作,文件删除后将无法恢复。
注意事项
本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见初始化。
要删除文件,您必须具有
oss:DeleteObject
权限。具体操作,请参见为RAM用户授权自定义的权限策略。
删除单个文件
以下代码用于删除examplebucket中的exampleobject.txt文件。
using Aliyun.OSS;
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "yourEndpoint";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// 填写Bucket名称,例如examplebucket。
var bucketName = "examplebucket";
// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
var objectName = "exampledir/exampleobject.txt";
// 创建OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 删除文件。
client.DeleteObject(bucketName, objectName);
Console.WriteLine("Delete object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Delete object failed. {0}", ex.Message);
}
批量删除文件
批量删除文件时,每次最多删除1000个文件。
返回结果包括如下两种模式,默认返回模式为详细模式,请根据实际选择返回模式。
详细模式(verbose):未设置quietMode或者设置quietMode为false,表示返回所有删除的文件列表。
简单模式(quiet):设置quietMode为true,OSS不返回消息体。
以下代码用于删除examplebucket中指定的多个文件。
using Aliyun.OSS;
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
var endpoint = "yourEndpoint";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// 填写Bucket名称,例如examplebucket。
var bucketName = "examplebucket";
// 创建OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
// 设置需要删除的多个文件完整路径。文件完整路径中不能包含Bucket名称。
var keys = new List<string>();
keys.Add("exampleobject.txt");
keys.Add("testdir/sampleobject.txt");
// 设置为详细模式,返回所有删除的文件列表。
var quietMode = false;
var request = new DeleteObjectsRequest(bucketName, keys, quietMode);
// 删除多个文件。
var result = client.DeleteObjects(request);
if ((!quietMode) && (result.Keys != null))
{
foreach (var obj in result.Keys)
{
Console.WriteLine("Delete successfully : {0} ", obj.Key);
}
}
Console.WriteLine("Delete objects succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Delete objects failed. {0}", ex.Message);
}
相关文档
删除单个文件
关于删除单个文件的API接口说明,请参见DeleteObject。
批量删除文件
关于批量删除文件的完整示例代码,请参见GitHub示例。
关于批量删除文件的API接口说明,请参见DeleteMultipleObjects。