我正在尝试将所有文件路径放入存储桶中。使用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;
}
答案 0 :(得分:1)
S3没有文件夹。它基本上有key =&gt;对象映射+匹配键前缀的能力。
当您正在寻找A /您正在查看所有具有以A /
开头的前缀的键文件夹的错觉通常由您正在使用的软件(cloudberry)在客户端构建,或者如果您的应用程序逻辑依赖于此,您还可以解析回来“重新创建”本地文件夹的密钥。
同样,S3只知道密钥,并且可以在密钥上进行前缀匹配。
答案 1 :(得分:0)
$ 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并没有真正的子文件夹,/只是键的一部分。