使用 asp.net 从 AWS S3 存储桶的子目录中删除文件

Deleting a file from a sub directory of an AWS S3 bucket using asp.net

我想删除位于以下路径的文件:bucket1/dir1/dir2/file.png

我做的代码:

public bool DeleteFileFromS3(string bucketName, string directoryInBucket, string subDirectoryInDirectory, string fileNameInS3) 
{
    IAmazonS3 client = new AmazonS3Client(RegionEndpoint.USEast2);
    var BucketName = "";

    if (directoryInBucket == "" || directoryInBucket == null)
    {
        BucketName = bucketName; //no subdirectory just bucket name  
    }
    else
    {   // subdirectory and bucket name  
        BucketName = bucketName + @"/" + directoryInBucket + @"/" + subDirectoryInDirectory;
    }

    var objectName = fileNameInS3;

    client.DeleteObject(BucketName, objectName); 

    return true; //indicate that the file was sent 
}

但是,这不起作用。

经过一些研究,我发现 AWS 文件系统是不同的。它是基于对象的,文件存储为带有键的对象。但是,我无法找到一个示例,该示例使用存储桶子目录中的文件的密钥,然后使用它们将其删除。请给我一些建议。

BucketName 应该只包含存储桶的名称。

ObjectName 应包括对象的名称,以及对象的完整路径

例如:

  • BucketName = 'my-bucket'
  • ObjectName = 'invoices/january/foo.txt'

这是因为 Amazon S3 并没有真正的目录,尽管 'appears' 有目录。完整路径是对象名称的一部分 ('Key')。