在OSS中,用户可以通过一系列的接口管理存储空间(Bucket)中的文件(Object),比如ListObjects、DeleteObject、CopyObject、DoesObjectExist等。
列出存储空间中的文件
简单列出文件
- using Aliyun.OSS;
- // 初始化OssClient
- var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
- /// <summary>
- /// 列出指定存储空间下的文件的摘要信息OssObjectSummary列表
- /// </summary>
- /// <param name="bucketName">存储空间的名称</param>
- public void ListObjects(string bucketName)
- {
- try
- {
- var listObjectsRequest = new ListObjectsRequest(bucketName);
- var result = client.ListObjects(listObjectsRequest);
- Console.WriteLine("List objects succeeded");
- foreach (var summary in result.ObjectSummaries)
- {
- Console.WriteLine("File name:{0}", summary.Key);
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("List objects failed. {0}", ex.Message);
- }
- }
说明:
- 完整代码参考GitHub。
- 默认情况下,如果存储空间中的文件数量大于100,则只会返回100个文件, 且返回结果中 IsTruncated 为 true,并返回 NextMarker 作为下此读取的起点。
- 若想增大返回文件数目,可以修改MaxKeys参数,或者使用Marker参数分次读取。
带前缀过滤的列出文件
- using Aliyun.OSS;
- // 初始化OssClient
- var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
- /// <summary>
- /// 列出指定存储空间下其Key以prefix为前缀的文件的摘要信息OssObjectSummary
- /// </summary>
- /// <param name="bucketName">存储空间的名称</param>
- /// <param name="prefix">限定返回的文件必须以此作为前缀</param>
- public void ListObjects(string bucketName, string prefix)
- {
- try
- {
- var listObjectsRequest = new ListObjectsRequest(bucketName)
- {
- Prefix = prefix
- };
- var result = client.ListObjects(listObjectsRequest);
- Console.WriteLine("List objects succeeded");
- foreach (var summary in result.ObjectSummaries)
- {
- Console.WriteLine("File Name:{0}", summary.Key);
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("List objects failed. {0}", ex.Message);
- }
- }