使用 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')。
我想删除位于以下路径的文件: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')。