在AWS3中的目录中的子目录中获取文件名,c#

问题描述 投票:0回答:2
var accessKey = "my key"; var secretKey = "my secret key"; IAmazonS3 client = new AmazonS3Client(accessKey, secretKey, RegionEndpoint.USEast1); S3DirectoryInfo dir = new S3DirectoryInfo(client, "mybucketname", "foldername"); foreach (IS3FileSystemInfo file in dir.GetFileSystemInfos()) { filename= file.Name; }

thanks

我使用nuget软件包(.net core,但是语法应该相似,因为我在短时间前迁移到.NET核心)

awssdk.core

c# amazon-web-services amazon-s3
2个回答
3
投票

    public async Task<List<string>> ListS3ObjectsNames(string bucket, string prefix) { var awsAccessKey = "dasdasda"; var awsSecretKey = "asdadasdsecret"; var region = Amazon.RegionEndpoint.USEast1; using (var client = new AmazonS3Client(awsAccessKey, awsSecretKey, region)) { var response = await client.ListObjectsAsync(bucket, prefix); return response.S3Objects.Count == 0 ? new List<string>() : response.S3Objects.Select(x => x.Key).ToList(); } }
  • INASP.NET 4.5至4.6如果我记得正确的方法是
  • listObjects
  • ,并且是非异步。

要使用C#中的
Amazons3Client
获取Amazon S3中的目录列表(或在文件夹中的对象列表),您可以使用ListObjectSasync方法,指定代表文件夹路径的前缀。 there是一个故障:

建立S3客户端


0
投票
using Amazon.S3; using Amazon.S3.Model; var client = new AmazonS3Client();

使用您的AWS凭据和区域

string bucketName = "replace-with-your-bucket-name"; string folderPath = "path/to/your/folder"; var request = new ListObjectsRequest { BucketName = bucketName, Prefix = folderPath, Delimiter = "/" // the Delimiter is optional, but useful for finding subfolders };
  1. call listObjectSasync并处理结果:
var response = await client.ListObjectsAsync(request);  
foreach (var s3Obj in response.S3Objects)  
{  
  Console.WriteLine($"Object Key: {s3Obj.Key}");  
}  
if (response.CommonPrefixes != null && 0 \< response.CommonPrefixes.Count)  
{  
  foreach (var prefix in response.CommonPrefixes)  
  {  
    Console.WriteLine($"Subfolder: {prefix}");  
  }  
}
  1. 解释:
  2. 前缀:此参数指定您要从中列出对象的路径。以此前缀开头的键的对象将返回。 定界符(可选):如果将定界符设置为“/”,则S3将以“/”作为文件夹将键视为,并将其返回在CommonPrefixes列表中。 S3Objects:此列表包含指定前缀(文件夹)中发现的对象。 COMMONPREFIXE(可选):此列表包含子文件夹的名称(如果设置了定界符)。
example
    如果您的水桶具有以下结构:
我的桶/图像/
my bucket/images/photo1.jpg

我的桶/图像/photo2.png
我bucket/images/profile/

my-bucket/images/profile/avatar.png

    • 您用
    • ListObjectsAsync
    • bucketName = "my-bucket"
    • 致电
    • folderPath = "images/"
        ,输出将是:
      • Object Key: images/photo1.jpg Object Key: images/photo2.png Subfolder: images/profile/
    • 我只需要自己学习,所以这个答案是分享我学到的东西,而稍后要回顾一下。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.