我是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));
OR
S3Object fetchFile = s3.getObject(new GetObjectRequest(bucketName + "/APL420/", fileName));
无效。
答案 0 :(得分:1)
请不要在最后使用斜杠,否则如果密钥存在则它将起作用。 S3服务默认添加斜杠。
根据@Michael评论编辑解决方案。在文件名中使用前缀是正确的解决方案。不在存储桶名称中。
S3Object fetchFile = s3.getObject(new GetObjectRequest(bucketName, "APL420/" + fileName));
从S3RequestEndpointResolver添加片段:
private String getPathStyleResourcePath() {
return bucketName + "/" + (key != null ? key : "");
}
答案 1 :(得分:0)
getObject在指定的存储桶和密钥下获取存储在Amazon S3中的单个对象。如果未满足指定的约束,则返回null。
您可能需要查看MultipleFileDownload课程中的TransferManager界面。