【问题标题】:Amazon S3 - Copy pasted file path issueAmazon S3 - 复制粘贴的文件路径问题
【发布时间】:2017-06-03 00:13:41
【问题描述】:

我正在尝试获取存储桶中的所有文件路径。使用 listobjects 函数我可以实现它。但存在文件路径问题。

考虑一下这是文件夹结构

SampleBucket --> A(根文件夹)--> B(子文件夹)--> c(B内的子文件夹)

我需要的是

http://SampleBucket.s3.amazonaws.com/A/

http://SampleBucket.s3.amazonaws.com/A/B/

http://SampleBucket.s3.amazonaws.com/A/B/C

我得到的是

http://SampleBucket.s3.amazonaws.com/A/

http://SampleBucket.s3.amazonaws.com/A/B/C

这发生在我创建“A”文件夹并将粘贴的“B”文件夹从本地驱动器复制到云莓果时

这是我获取存储桶中所有文件夹和文件的代码..

public List<S3ObjectSummary> getObjectslistFromFolder(String bucketName, String folderKey) {    
AWSCredentials awsCreds = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3client = new AmazonS3Client(awsCreds); 
ObjectListing current = s3client.listObjects(bucketName,folderKey);
List<S3ObjectSummary> keyList = current.getObjectSummaries();
current = s3client.listNextBatchOfObjects(current);
while (current.isTruncated()){
    keyList.addAll(current.getObjectSummaries());
    current = s3client.listNextBatchOfObjects(current);
}
keyList.addAll(current.getObjectSummaries());   
return keyList;

}

【问题讨论】:

    标签: java amazon-web-services amazon-s3


    【解决方案1】:

    S3 没有文件夹。它基本上具有 key => 对象映射 + 匹配键前缀的能力。

    当您查找 A/ 时,您正在查看前缀以 A/ 开头的所有键

    文件夹的错觉通常是由您使用的软件(cloudberry)在客户端构建的,或者如果您的应用程序逻辑依赖于此,您还可以解析返回的键以在本地“重新创建”文件夹。

    同样,S3 只知道键并且可以对键进行前缀匹配。

    【讨论】:

      【解决方案2】:

      似乎云莓创建了两个对象。 a/ 和 a/b/c/。我可以用这些 cli 命令重现它:

      $ aws s3api put-object --bucket testBucket --key "a/" 
      $ aws s3api put-object --bucket testBucket --key "a/b/c/" 
      $ aws s3api list-objects --bucket testBucket --prefix a --output json | jq -r .Contents[].Key
      a/
      a/b/c/
      

      在 AWS S3 控制台中,它们看起来像普通的子文件夹 a、b 和 c。你应该知道 S3 并没有子文件夹,/ 只是键的一部分。

      【讨论】:

      • 我已经编辑了我的问题。请检查。我没有在根文件夹中删除 B 文件夹。粘贴在A文件夹中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      相关资源
      最近更新 更多