c# - 通过C#获取AWS3目录中子目录中的文件名
问题描述
我正在尝试获取 AWS Bucket 目录中子目录中的文件名。我可以获得子目录名称,但我不知道如何列出子目录下的文件。
以下代码获取子目录名称,但这些子目录中的文件名
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;
}
谢谢
解决方案
我正在使用 nuget 包(.net 核心,但语法应该相似,因为我不久前迁移到 .net 核心)
- AWSSDK.Core
- AWSSDK.S3
和
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();
}
}
在 asp.net 4.5 到 4.6 中,如果我记得正确的方法是ListObjects并且是非异步的。
推荐阅读
- java - 将 Spring Dispatcher Servlet 路径转换为 ZuulServlet
- bitbucket - 我们可以在 Bitbucket CI/CD 管道中配置审批流程吗
- python - 如何在 numpy 中围绕特定轴展开和重新滚动矩阵?
- java - 如何在测试类中获取 InitialContext 值
- sql-server - 从分隔字符串中提取文本到另一个分隔字符串 TSQL
- tensorflow - GCP ML-engine FailedPreconditionError(代码:2)
- rust - 如何通知 Tokio C 拥有的线程中的事件?
- visual-studio - Error while i try to commit changes in Git via Visual studio 2017
- java - 为什么 spring data jpa 存储库仅强制接口?
- entity-framework-core - Entity Framework Core - 获取待处理迁移的脚本