使用DigitalOcean空间复制对象

时间:2019-04-09 20:38:37

标签: java amazon-s3 digital-ocean

我目前正在将Digital Ocean与Amazon S3 SDK结合使用,并且能够以编程方式上传和删除文件。但是,复制对象似乎是一个大问题。

首先,我的存储桶列表始终返回0个结果:

s3Client.listBuckets() // 0 results

第二,我在一个名为company__1/tempom81p2epoksju921ntk/CLASSIFICATION/127a58b2_dd14_4851_88f2_99d28f849191.jpeg的空间中有一个名为my_do_space的对象。如果要在同一空间内复制此对象,正确的代码将是什么样?我尝试了以下方法:

s3Client.copyObject("my_do_space","company__1/tempom81p2epoksju921ntk/CLASSIFICATION/127a58b2_dd14_4851_88f2_99d28f849191.jpeg", "my_do_space", "company__1/somenewthing/CLASSIFICATION/test.jpeg");

我也尝试了所有可能的组合,但似乎都不起作用

1 个答案:

答案 0 :(得分:1)

原来我的凭据是错误的,我正在使用以下内容:

digitalocean:
  spaces:
    endpoint: https://my_bucket.sfo2.digitaloceanspaces.com

由于某种原因,我能够从其中正确上传/删除文件

当我将凭据更改为:

digitalocean:
  spaces:
    endpoint: https://sfo2.digitaloceanspaces.com

并通过代码指定存储区:

s3Client.putObject(new PutObjectRequest("my_bucket", key, fileToUpload)
            .withCannedAcl(CannedAccessControlList.PublicRead));

我能够使用问题中的代码正确复制它