java - 使用 AmazonS3Client.java api 将文件上传到 S3

标签 java scala amazon-s3

我正在使用 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的存储桶名称?

谢谢

最佳答案

这确实有点令人惊讶,但 S3 中不存在“子桶”这样的东西。所有存储桶都是顶级的。您在 S3 管理控制台或其他 UI 中看到的存储桶内的结构称为“文件夹”,但即使它们实际上也不存在!例如,您不能直接创建或销毁文件夹,也不能为其设置任何属性。文件夹纯粹是一种表示级约定,用于查看存储桶中的底层平面对象集。也就是说,将对象拆分到(完全不存在的)文件夹中非常容易。只需给它们命名,每个级别用“/”分隔。

val putObjectRequest = new PutObjectRequest(bucketName, topFolderName +"/" + subFolderName+ "/" +key, inputStream, metadata)

关于java - 使用 AmazonS3Client.java api 将文件上传到 S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6518953/

相关文章:

java - 在 Blackberry 中上传 UTF-8 文本文件

java - JDBC 查询中的分页

scala - Scala 中的闭包与 Java 中的闭包

scala - 如何在 Scala 中将元素附加或前置到元组

node.js - aws ec2 getaddrinfo ENOTFOUND 错误代码

c# - 在 listview winform c# 中列出 S3 Bucket 键

java - 对象转换的设计模式和约定

scala - 在 finatra 应用程序中禁用 http

amazon-web-services - AWS s3跨账户策略,确保所有账户都能读取

java - IndexOutofBoundsException:我无法解决它