我是亚马逊和java的新手。 我在这里尝试两件事。
1st - 我正在尝试在我已创建的Amazon S3存储桶中创建一个文件夹,并且已获取凭据。
第二 - 我正在尝试将文件上传到此存储桶。
根据我的理解,我可以使用putObjectRequest()方法来实现我的两个任务。
PutObjectRequest(bucketName, keyName, file)
用于上传文件。
我不确定我是否应该使用这种方法
PutObjectRequest(String bucketName, String key, InputStream input,
ObjectMetadata metadata)
仅用于创建文件夹。我正在使用InputSteam和ObjectMetadata。我不知道这到底是什么以及如何使用它。
非常感谢任何帮助。 :)
答案 0 :(得分:10)
您无需在Amazon S3中创建文件夹。实际上,文件夹不存在!
相反,键(文件名)包含完整路径和对象名称。
例如,如果名为cat.jpg
的文件位于animals
文件夹中,则密钥(文件名)为:animals/cat.jpg
只需Put
具有该密钥的对象,并自动创建该文件夹。 (实际上,这不是真的,因为没有文件夹,但这是想象这个概念的简单方法。)
关于使用哪种功能......始终使用最符合您需求的功能。因此,只需使用PutObjectRequest(bucketName, keyName, file)
。
答案 1 :(得分:1)
是的,你可以使用PutObjectRequest(bucketName,keyName,file)来完成这两项任务。
1,创建S3文件夹
使用AWS S3 Java SDK,只需在键名末尾添加“/”,它将创建空文件夹。
var folderKey = key + "/"; //end the key name with "/"
示例代码:
final InputStream im = new InputStream() {
@Override
public int read() throws IOException {
return -1;
}
};
final ObjectMetadata om = new ObjectMetadata();
om.setContentLength(0L);
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, im, om);
s3.putObject(putObjectRequest);
2,上传文件 同样,您可以从本地文件中获取输入流。
答案 2 :(得分:-1)