从S3存储桶获取目录信息:错误:密钥是目录

时间:2019-09-10 23:58:04

标签: c# .net amazon-s3 aws-sdk aws-sdk-net

我正在使用适用于.NET的AWS SDk,我试图从S3存储桶中获取目录信息。

以下代码有效,我可以在根folder中获得文件

// path: folder
S3DirectoryInfo di = new S3DirectoryInfo(s3Client, "myS3BucketName", "folder");

if (di.Exists)
{
    IS3FileSystemInfo[] files = di.GetFileSystemInfos();
}

现在我尝试相同的代码,并在sub-folder下查询一个folder,该代码获取目录信息...但是在读取文件内容时,它会引发异常

// path: folder/sub-folder
S3DirectoryInfo di = new S3DirectoryInfo(s3Client, "myS3BucketName", "folder/sub-folder");

if (di.Exists)
{
    // directory exists, but reading files throws exception
    IS3FileSystemInfo[] files = di.GetFileSystemInfos();
}

这是例外:

  

键是目录

这是我初始化s3Client的方式:

s3Client = new AmazonS3Client("Ak...access-key...", "+8b...secret-key...", RegionEndpoint.APSoutheast2);

1 个答案:

答案 0 :(得分:0)

问题是在路径中使用斜杠...使用高级API时,您需要在路径中使用反斜杠。

注意:使用AWS低级API时,您需要在路径中使用斜杠。

此代码可以正常工作:

// path: folder\sub-folder\
string path = @"folder\sub-folder\";
S3DirectoryInfo di = new S3DirectoryInfo(s3Client, "myS3BucketName", path);

if (di.Exists)
{
    // directory exists, but reading files throws exception
    IS3FileSystemInfo[] files = di.GetFileSystemInfos();
}