Amazon S3的客户端没有列出的所有文件夹斗

萨迪:

我想列出所有所谓的folderssub-folders在一个s3桶中。现在,当我试图列出递归我不使用路径中的所有文件夹withDelimeter()功能。所有所谓的folder名称应结束/,这是我的逻辑列表中的所有文件夹和子文件夹。

这里的scala代码(不是故意粘贴catch此代码):

val awsCredentials = new BasicAWSCredentials(awsKey, awsSecretKey)
val client = new AmazonS3Client(awsCredentials)
def listFoldersRecursively(bucketName: String, fullPath: String): List[String] = {
  try {
    val objects = client.listObjects(bucketName).getObjectSummaries
    val listObjectsRequest = new ListObjectsRequest()
      .withPrefix(fullPath)
      .withBucketName(bucketName)
    val folderPaths = client
      .listObjects(listObjectsRequest)
      .getObjectSummaries()
      .map(_.getKey)
    folderPaths.filter(_.endsWith("/")).toList
  }
}

这里是我的结构bucket通过s3 client

下面是我用这让列表scala代码

没有任何明显的模式,很多文件夹,从检索到的文件夹列表中缺少。我没有使用

client.listObjects(listObjectsRequest).getCommonPrefixes.toList

因为它是由于某种原因,返回空列表。

PS:无法在后直接添加,因为作为一个新的用户照片。

迈克尔 - sqlbot:

没有任何明显的模式,很多文件夹,从检索到的文件夹列表中缺少。

这是你的问题:我们假定你是应该始终在结束键的对象/,以象征的文件夹。

这是一个不正确的假设。他们只会在那里,如果你创造了他们,无论是通过S3控制台或API。我们没有理由指望他们,因为S3实际上并不需要它们或将其用于任何东西,和S3服务不自发地创建他们自己。

如果您使用API上传与键的对象foo/bar.txt,这不创建foo/文件夹作为不同的对象。它会出现在控制台方便的文件夹,但它不存在,除非在某些时候你刻意制造的。

当然,要上传这样的对象与控制台的唯一方法是“创造”的文件夹,除非它已经出现-但会出现在控制台并不一定等同于存在为不同的对象。

在过滤endsWith("/")无效的逻辑。

这就是为什么底层API包括CommonPrefixes与如果每个ListObjects响应delimiterprefix指定。这是“文件夹”的一个新的水平,你必须递归下来,以便找到一个新的水平钻入的列表。

如果指定一个前缀,包含前缀和前缀之后,分隔符中第一次出现的相同的字符串的所有键被称为CommonPrefixes一个结果元素进行分组。如果不指定前缀参数,在关键的开头子开始。被所述CommonPrefixes结果元件下分组中的键不是在响应别处返回。

https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html

您需要访问与任何库,您或使用此功能,或者您需要遍历键的完整列表,发现实际常用前缀/使用字符串分割边界。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从客户端浏览器直接上传Amazon S3文件-私钥披露

如何在Amazon S3中重命名文件和文件夹?

Laravel 5 Amazon AWS S3错误:客户端错误:403 RequestTimeTooSkewed

Amazon S3:如何获取存储桶中的文件夹列表?

使用API在Amazon S3存储桶中创建文件夹/上传文件

Amazon Aurora 1.8从S3加载数据-无法实例化S3客户端

如何从Amazon S3存储桶中的文件夹中获取所有文件?

如何模拟Amazon S3客户端进行.NET单元测试

如何授予对Amazon S3中文件夹的所有子文件夹的访问权限?

Amazon S3客户端无法下载带空格或哈希的文件?

Amazon S3存储:可以在私有存储桶中列出公共文件夹吗?

Amazon S3如何在“文件夹”中列出文件

删除位于Amazon S3上存储桶中的子文件夹中的文件

Amazon S3是否对您创建的子文件夹数量有限制?

什么是好的Amazon S3客户端?

Mule ESB:如何获取所有存储在Amazon S3存储桶内的文件夹中的文件(获取对象内容)

Spring应用程序-将Amazon S3上的图像获取到客户端

Amazon S3简单Javascript客户端文件上传问题

从Amazon S3存储桶子文件夹.Net获取文件

Amazon S3同步到本地文件夹-Java

如何在Amazon S3存储桶中创建新文件夹?

将文件上传到 Amazon s3 - 客户端 javascript

使用 .net SDK 从 Amazon S3 存储桶下载文件夹

在 Laravel 中压缩和下载 Amazon S3 存储桶文件和文件夹

所有文件夹名称都没有出现在 Amazon S3 的 List objects 调用中

Amazon S3 文件名:替换所有文件中的双空格

将嵌套的 Amazon S3 文件夹复制到扁平文件夹中

文件中“属于”用户的文件夹的 Amazon S3 事件

AWS:使用 lambda 函数读取 Amazon S3 存储桶中的所有文件

TOP 榜单

热门标签

归档