我是 AWS 新手,从 AWS 中的特定文件夹下载文件时遇到困难。我知道AWS中没有文件夹概念。
我可以通过以下代码下载存储桶根文件夹中的文件,但不能下载任何特定文件夹中的文件:
String fileName = "savings.pdf";
private static String bucketName = "XXXXXX.statement";
S3Object fetchFile = s3.getObject(new GetObjectRequest(bucketName.concat("APL420/"), fileName));
final BufferedInputStream i = new BufferedInputStream(fetchFile.getObjectContent());
InputStream objectData = fetchFile.getObjectContent();
Files.copy(objectData, new File(fileName).toPath());
objectData.close();
但无法下载存储桶中文件夹的所有内容。请提出正确的方法。
我试过this回答但将任何内容附加到bucketName都不起作用:
S3Object fetchFile = s3.getObject(new GetObjectRequest(bucketName + "APL420/", fileName));
或者
S3Object fetchFile = s3.getObject(new GetObjectRequest(bucketName + "/APL420/", fileName));
不工作。
最佳答案
请不要在末尾使用斜杠,这样如果 key 存在,它就会起作用。 S3 服务默认附加斜杠。
根据@Michael 评论编辑了解决方案。在文件名中使用前缀是正确的解决方案。不在存储桶名称中。
S3Object fetchFile = s3.getObject(new GetObjectRequest(bucketName, "APL420/" + fileName));
从 S3RequestEndpointResolver 添加代码片段:
private String getPathStyleResourcePath() {
return bucketName + "/" + (key != null ? key : "");
}
关于java - 从 AWS 下载特定文件夹的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206578/