修改s3 minio 删除方法
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-09-04 11:14:52 +08:00
parent 3d304961d3
commit 6cc4c32625
2 changed files with 37 additions and 28 deletions
+35 -26
View File
@@ -573,7 +573,15 @@ namespace IRaCIS.Core.Application.Helper
var objects = minioClient.ListObjectsAsync(listArgs).ToListObservable().Select(t => t.Key).ToList();
// 创建一个空列表用于存储对象键
var objects = new List<string>();
// 使用 await foreach 来异步迭代对象列表
await foreach (var item in minioClient.ListObjectsEnumAsync(listArgs))
{
objects.Add(item.Key);
}
if (objects.Count > 0)
{
@@ -605,37 +613,38 @@ namespace IRaCIS.Core.Application.Helper
var amazonS3Client = new AmazonS3Client(credentials, clientConfig);
try
// 列出指定前缀下的所有对象
var listObjectsRequest = new ListObjectsV2Request
{
ListObjectsResponse objectListing = null;
string nextMarker = null;
do
BucketName = awsConfig.BucketName,
Prefix = prefix
};
var listObjectsResponse = await amazonS3Client.ListObjectsV2Async(listObjectsRequest);
if (listObjectsResponse.S3Objects.Count > 0)
{
// 准备删除请求
var deleteObjectsRequest = new Amazon.S3.Model.DeleteObjectsRequest
{
// 使用 prefix 模拟目录结构,设置 MaxKeys 和 NextMarker
objectListing = await amazonS3Client.ListObjectsAsync(new Amazon.S3.Model.ListObjectsRequest()
BucketName = awsConfig.BucketName,
Objects = new List<KeyVersion>()
};
foreach (var s3Object in listObjectsResponse.S3Objects)
{
deleteObjectsRequest.Objects.Add(new KeyVersion
{
Prefix = prefix,
MaxKeys = 1000,
Marker = nextMarker
Key = s3Object.Key
});
}
//List<string> keys = objectListing.CommonPrefixes.Select(t => t.Key).ToList();
//// 删除获取到的文件
//if (keys.Count > 0)
//{
// //await amazonS3Client.DeleteObjectsAsync(new Amazon.S3.Model.DeleteObjectsRequest() { BucketName=awsConfig.BucketName,k}awsConfig.BucketName, keys, false));
//}
// 设置 NextMarker 以获取下一页的数据
nextMarker = objectListing.NextMarker;
} while (objectListing.IsTruncated);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
// 批量删除对象
var deleteObjectsResponse = await amazonS3Client.DeleteObjectsAsync(deleteObjectsRequest);
}
}
else
{