【问题标题】:AWS S3 listFiles - How can i get directory path?AWS S3 listFiles - 我如何获取目录路径?
【发布时间】:2019-04-09 19:07:35
【问题描述】:

是否可以从 s3 存储桶中获取所有文件名? 在我当地的 spring boot 项目中,我写了类似的东西,它可以工作。

File[] files = new File("/myfiles").listFiles();
    for (File file : files) {
        if (file.isFile()) {
            filesDir.add(file.getName());
        }
    }

在 AWS 上我尝试了这个,但它不起作用。

File[] files = new File("https://s3.eu-central-1.amazonaws.com/bucket_name/myfiles/").listFiles();
        for (File file : files) {
            if (file.isFile()) {
                filesDir.add(file.getName());
            }
        }

怎么了,如何从 s3 获取目录路径?

【问题讨论】:

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


【解决方案1】:

首先,您需要连接到 S3。为此,请遵循以下建议。 在你的 pom 中添加 AWS API

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk</artifactId>
    <version>1.11.113</version>
</dependency>

您将创建一个 AmazonS3 服务实例。像这样:

BasicAWSCredentials credentials = new BasicAWSCredentials("ACCESS KEY", "SECRET KEY");
AmazonS3 service AmazonS3Client.builder()
             .withClientConfiguration(clientConfiguration)
             .withEndpointConfiguration(new EndpointConfiguration("YOUR_ENDPOINT", "YOUR_REGION"))
             .withCredentials(new AWSStaticCredentialsProvider(credentials))
             .build();

连接后,您可以使用刚刚创建的服务检索有关存储桶的信息。

ListObjectsV2Request req = new ListObjectsV2Request().withBucketName("bucket").withPrefix("path_your_file_or_folder");
ListObjectsV2Result result = service.listObjectsV2(req)
for (S3ObjectSummary object: result .getObjectSummaries()){
    String key = object.getKey(); //your object it's here.
}

获得文件的密钥后,您可以下载它。 我希望这可以帮助你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多