使用API​​在amazon S3存储桶中创建文件夹/上传文件

时间:2016-01-29 08:54:19

标签: java amazon-s3 amazon

我是亚马逊和java的新手。 我在这里尝试两件事。

1st - 我正在尝试在我已创建的Amazon S3存储桶中创建一个文件夹,并且已获取凭据。

第二 - 我正在尝试将文件上传到此存储桶。

根据我的理解,我可以使用putObjectRequest()方法来实现我的两个任务。

PutObjectRequest(bucketName, keyName, file) 

用于上传文件。

我不确定我是否应该使用这种方法

PutObjectRequest(String bucketName, String key, InputStream input,
        ObjectMetadata metadata) 

仅用于创建文件夹。我正在使用InputSteam和ObjectMetadata。我不知道这到底是什么以及如何使用它。

非常感谢任何帮助。 :)

3 个答案:

答案 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)

或者您可以使用[minio client] java库

您可以按照MakeBucket.java示例创建一个存储桶& PutObject.java添加对象的示例。

希望有所帮助。