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
与
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();
}
}
要使用C#中的
Amazons3Client获取Amazon S3中的目录列表(或在文件夹中的对象列表),您可以使用ListObjectSasync方法,指定代表文件夹路径的前缀。 there是一个故障:
建立S3客户端
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
};
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}");
}
}
example:
我的桶/图像/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/