列出 AWS S3 存储桶的特定“文件夹”中的文件
我需要列出包含在我的S3存储桶中包含的某个文件夹中的所有文件。
文件夹结构如下
/my-bucket/users/<user-id>/contacts/<contact-id>
我有与用户相关的文件和与特定用户联系人相关的文件。我需要列出两者。
要列出我使用此代码的文件:
ListObjectsRequest listObjectsRequest = new ListObjectsRequest().withBucketName("my-bucket")
.withPrefix("some-prefix").withDelimiter("/");
ObjectListing objects = transferManager.getAmazonS3Client().listObjects(listObjectsRequest);
要列出某个用户的文件,我使用以下前缀:
users/<user-id>/
并且我正确地获取了目录中除子目录之外的所有文件,例如:contacts
users/<user-id>/file1.txt
users/<user-id>/file2.txt
users/<user-id>/file3.txt
要列出某个用户联系人的文件,我使用以下前缀:
users/<user-id>/contacts/<contact-id>/
但是在这种情况下,我也将目录本身作为返回对象:
users/<user-id>/contacts/<contact-id>/file1.txt
users/<user-id>/contacts/<contact-id>/file2.txt
users/<user-id>/contacts/<contact-id>/
为什么我会有这种行为?两个上市请求有什么不同?我只需要列出目录中的文件,不包括子目录。