我想洗掉特定 S3 存盤桶中的所有檔案。這些檔案存在于 S3 存盤桶內名為“test”的檔案夾中。我不知道如何回圈洗掉 S3 存盤桶中的所有檔案。我不確定可以將哪些引數傳遞給 DeleteObjectsAsync 以洗掉檔案。這是我在閱讀了一些在線 AWS 檔案后所得到的:
using (var client = new AmazonS3Client(_configuration["AwsAccesKey"].ToString(), _configuration["AwsSecretKey"].ToString()))
{
var request = new ListObjectsRequest
{
BucketName = _configuration["AwsBucketName"].ToString()
};
var response = await client.ListObjectsAsync(request);
foreach (var entry in response.S3Objects)
{
await client.DeleteObjectsAsync(request, entry.Key);
}
}
return View();
用戶一直要求我在單擊前端按鈕時洗掉所有檔案。這與持續時間無關。
對此的任何幫助將不勝感激。
uj5u.com熱心網友回復:
DeleteObjectsAsync方法除外,DeleteObjectsRequest應包含您要洗掉的物件的所有鍵。
你的代碼應該是這樣的:
var request = new ListObjectsRequest
{
BucketName = "bucketname"
};
var response = await client.ListObjectsAsync(request);
var keys = new List<KeyVersion>();
foreach (var item in response.S3Objects)
{
// Here you can provide VersionId as well.
keys.Add(new KeyVersion { Key = item.Key });
}
var multiObjectDeleteRequest = new DeleteObjectsRequest()
{
BucketName = "bucketname",
Objects = keys
};
var deleteObjectsResponse = await client.DeleteObjectsAsync(multiObjectDeleteRequest);
請務必注意,ListObjectsAsync 最多回傳 1000 個物件。DeleteObjectsRequest 最多洗掉 1000 個物件。
您可以在此處閱讀更多資訊:https ://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-multiple-objects.html
uj5u.com熱心網友回復:
以下是遞回洗掉特定 S3 存盤桶中所有檔案的完整代碼:
public async Task<IActionResult> DeleteAll()
{
using (var client = new AmazonS3Client(_configuration["AwsAccesKey"].ToString(), _configuration["AwsSecretKey"].ToString()))
{
var request = new ListObjectsRequest
{
BucketName = _configuration["AwsBucketName"].ToString()
};
var response = await client.ListObjectsAsync(request);
foreach (var entry in response.S3Objects)
{
await client.DeleteObjectAsync(_configuration["AwsBucketName"].ToString(), entry.Key);
}
}
return View();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/416570.html
標籤:
