我正在使用AmazonS3Client.java从我的应用程序上传文件到S3。我使用putObject方法上传文件
val putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, metadata)
val acl = CannedAccessControlList.Private
putObjectRequest.setCannedAcl(acl)
s3.putObject(putObjectRequest)
这适用于我的S3帐户中最顶层的存储桶。现在,假设我想将文件上传到子桶,例如bucketA中的bucketB。我该如何为bucketB指定存储桶名称?
谢谢
答案 0 :(得分:5)
虽然有点令人惊讶,但S3中没有“子桶”这样的东西。所有水桶都是顶级的。您在S3管理控制台或其他UI中看到的存储桶内部结构称为“文件夹”,但即使它们并不存在!例如,您无法直接创建或销毁文件夹,也无法在其上设置任何属性。文件夹纯粹是一种表示级别约定,用于查看存储桶中底层的平面对象集。也就是说,将对象拆分为(完全不存在的)文件夹非常容易。只需给它们层次结构的名称,每个级别用“/”分隔。
val putObjectRequest = new PutObjectRequest(bucketName, topFolderName +"/" + subFolderName+ "/" +key, inputStream, metadata)
答案 1 :(得分:1)
尝试使用putObjectRequest.setKey("folder")