【问题标题】:creating a folder/uploading a file in amazon S3 bucket using API使用 API 在 amazon S3 存储桶中创建文件夹/上传文件
【发布时间】:2016-01-29 08:54:18
【问题描述】:

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

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

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

据我了解,我可以使用 putObjectRequest() 方法来完成我的两项任务。

PutObjectRequest(bucketName, keyName, file) 

用于上传文件。

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

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

仅用于创建文件夹。我在 InputSteam 和 ObjectMetadata 上苦苦挣扎。我不知道这到底是做什么用的,我该如何使用它。

任何帮助将不胜感激。 :)

【问题讨论】:

    标签: java amazon-s3 amazon


    【解决方案1】:

    您无需在 Amazon S3 中创建文件夹。其实文件夹是不存在的!

    Key(文件名)包含完整路径和对象名称。

    例如,如果名为cat.jpg 的文件位于animals 文件夹中,则密钥(文件名)为:animals/cat.jpg

    只需Put 一个具有该键的对象,就会自动创建文件夹。 (实际上,这不是真的,因为没有文件夹,但这是一种很好的简单方式来想象这个概念。)

    至于使用哪个功能...始终使用满足您需求的最简单的功能。因此,只需使用PutObjectRequest(bucketName, keyName, file)。

    【讨论】:

      【解决方案2】:

      是的,您可以使用 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、上传文件 类似地,您可以从本地文件中获取输入流。

      【讨论】:

        【解决方案3】:

        您也可以使用[minio client] java 库

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

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-04-12
          • 2017-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多