如何在C#中引用指定AWS S3 Bucket并列出其内容及指定文件
解决方案
一、列出指定Bucket中的JPG文件
替换你的button1_Click方法,使用ListObjectsV2Async获取Bucket内的对象,并筛选出JPG格式文件。如果Bucket内文件较多,需处理分页返回的情况:
private async void button1_Click(object sender, EventArgs e) { // 初始化S3客户端 using var client = new AmazonS3Client(); string targetBucket = "testbucktest"; var request = new ListObjectsV2Request { BucketName = targetBucket, // 可选:若JPG文件集中在特定前缀下,可设置Prefix缩小范围 // Prefix = "images/", MaxKeys = 1000 // 单次请求返回的最大文件数,可按需调整 }; try { ListObjectsV2Response response; do { response = await client.ListObjectsV2Async(request); // 筛选出JPG/JPEG格式文件,不区分大小写 var jpgFiles = response.S3Objects.Where(obj => obj.Key.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || obj.Key.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase)); foreach (var file in jpgFiles) { textBox1.Text += $"文件名:{file.Key},大小:{file.Size}字节\r\n"; } // 设置下一页续传标记,继续获取剩余文件 request.ContinuationToken = response.NextContinuationToken; } while (response.IsTruncated); // 还有未返回文件时循环请求 } catch (AmazonS3Exception ex) { textBox1.Text += $"错误信息:{ex.Message}\r\n"; } }
关键说明
ListObjectsV2Async是AWS推荐的列表对象方法,比旧版ListObjectsAsync更高效,支持分页- 通过
Where语句筛选文件后缀,适配大小写不同的JPG格式 - 分页处理:当
IsTruncated为true时,说明还有文件未返回,需用NextContinuationToken发起下一次请求
二、根据文件名获取特定文件
若需直接获取Bucket中的某个特定文件,使用GetObjectAsync方法,传入Bucket名称和文件的完整Key(即文件名,若文件在子目录下需包含路径,比如photos/summer.jpg):
private async void GetSpecificFile_Click(object sender, EventArgs e) { using var client = new AmazonS3Client(); string targetBucket = "testbucktest"; string targetFileKey = "example.jpg"; // 替换为你要获取的文件名 try { var request = new GetObjectRequest { BucketName = targetBucket, Key = targetFileKey }; using var response = await client.GetObjectAsync(request); textBox1.Text += $"获取文件成功:{response.Key}\r\n"; textBox1.Text += $"文件类型:{response.Headers.ContentType}\r\n"; // 示例:将文件保存到本地 // response.WriteResponseStreamToFile(@"C:\temp\example.jpg"); } catch (AmazonS3Exception ex) { textBox1.Text += $"获取文件失败:{ex.Message}\r\n"; } }
注意事项
- 确保AWS凭证配置正确(可通过Visual Studio AWS工具、环境变量或配置文件设置),否则会触发权限错误
- 捕获
AmazonS3Exception处理常见异常:比如Bucket不存在、文件不存在、权限不足等场景
内容的提问来源于stack exchange,提问作者Trevor K
相关产品推荐
相关产品推荐

