获取对象列表
ListObjects操作用于列出bucket中的全部object,该操作返回最多1000个对象信息,可以通过设置过滤条件来列出bucket中符合特定条件的对象信息。
代码示例:
using System;
using System.Threading.Tasks;
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;
namespace DotNetSDK.ObjectOperation
{
public class ListObjectsExample
{
public static async Task ListObjects()
{
var accessKey = "YOUR_ACCESS_KEY";
var secretKey = "YOUR_SECRET_KEY";
var endpoint = "YOUR_ENDPOINT";
var bucketName = "EXAMPLE_BUCKET";
var credentials = new BasicAWSCredentials(accessKey, secretKey);
try
{
var conf = new AmazonS3Config
{
ServiceURL = endpoint
};
var s3Client = new AmazonS3Client(credentials, conf);
var listObjectsRequest = new ListObjectsRequest()
{
BucketName = bucketName
};
var result = await s3Client.ListObjectsAsync(listObjectsRequest);
if (result.HttpStatusCode != System.Net.HttpStatusCode.OK)
{
Console.WriteLine("fail to list objects in bucket {0}, HttpStatusCode:{1}, ErrorCode:{2}.", bucketName, (int) result.HttpStatusCode, result.HttpStatusCode);
return;
}
Console.WriteLine("the objects in bucket {0} are: ", bucketName);
foreach (var obj in result.S3Objects)
{
Console.WriteLine(obj.Key);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
ListObjectsRequest可以设置的参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
BucketName | string | bucket的名称。 | 是 |
Delimiter | string | 与Prefix参数一起用于对对象key进行分组的字符。所有key包含指定的Prefix且第一次出现Delimiter字符的对象作为一组。如果没有指定Prefix参数,按Delimiter对所有对象key进行分割,多个对象分割后从对象key开始到第一个Delimiter之间相同的部分形成一组。 | 否 |
Encoding | EncodingType | 用于设置response中object key的字符编码类型。 | 否 |
Marker | string | 指定一个标识符,返回的对象的key将是按照字典顺序排序后位于该标识符之后的所有对象。 | 否 |
MaxKeys | int | 设置response中返回object key的数量,默认值和最大值均为1000。 | 否 |
Prefix | string | 限定返回对象的key必须以Prefix作为前缀。 | 否 |
ListObjects返回的结果如下:
属性名 | 类型 | 说明 |
---|---|---|
CommonPrefixes | List<string> | 当请求中设置了Delimiter和Prefix属性时,所有包含指定的Prefix且第一次出现Delimiter字符的key作为一组。 |
Contents | List<S3Object> | 对象数据,每个对象包含了Etag、Key、LastModifiedTime、Owner和Size等信息。 |
Delimiter | string | 与请求中设置的Delimiter一致。 |
IsTruncated | bool | 当为false时表示返回结果中包含了全部符合本次请求查询条件的对象信息,否则只返回了数量为MaxKeys个的对象信息。 |
MaxKeys | int | 本次返回结果包含的对象数量上限。 |
Name | string | bucket的名字。 |
NextMarker | string | 当返回结果中的IsTruncated为true时,可以使用NextMarker作为下次查询的Marker,继续查询出下一部分的对象信息。 |
Prefix | string | 与请求中设置的Prefix一致。 |
响应结果:
HTTP状态码 | 响应码 | 描述 |
---|---|---|
200 | OK | 操作成功。 |
403 | Forbidden | 用户没有权限执行操作。 |
404 | NotFound | 操作指定的bucket不存在。 |