【问题标题】:AWS S3 Java SDK not copying file to folderAWS S3 Java SDK没有将文件复制到文件夹
【发布时间】:2019-01-08 01:32:56
【问题描述】:

这里是 Java 8。我有一个具有以下文件夹子结构的 S3 存储桶 (myapp-bucket):

/artwork
    /upload
    /staging

myapp-bucket/artwork 文件夹如下所示:

我有将图像文件上传到/upload 文件夹的软件,然后我正在编写的另一个应用程序应该处理该图像并将其复制到/staging 文件夹。我必须执行此 S3 复制的代码如下:

CopyObjectRequest copyObjectRequest = new CopyObjectRequest(
  bucketName,
  objectKey,
  destinationBucket,
  destinationKey
);

log.info(
  "copying object from s3://{}/{} to s3://{}/{}",
  bucketName,
  objectKey,
  destinationBucket,
  destinationKey
);

// Constructed via 
AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
amazonS3.copyObject(copyObjectRequest);

运行时,我看到以下日志输出:

[main] DEBUG com.me.myapp.ImageProcessor - copying object from s3://myapp-bucket/artwork/upload/rlj_amp244001_270.jpeg to s3://myapp-bucket/artwork/staging

myapp-bucket/artwork 文件夹的最终状态如下所示:

看起来,与其将myapp-bucket/artwork/upload/<theImageFile> 复制到myapp-bucket/artwork/staging/ 目录,不如直接在/artwork 下创建一个新文件 并将其命名为staging,并可能复制二进制文件图像的内容到该暂存文件中。我哪里错了?!我只想以myapp-bucket/artwork/staging/<theImageFile> 结尾——提前致谢!

【问题讨论】:

  • 错字 - 您没有以 / 结尾 S3 存储桶文件夹名称。请记住,S3 完全按照您的指示进行操作 - 它使用您的 jpeg 并将其放在 s3://myapp-bucket/artwork/staging,但这是它自己的文件,而不是文件夹。

标签: java amazon-web-services amazon-s3


【解决方案1】:

S3 没有文件夹/目录 - 它只是平面存储上的糖。所以你的destinationKey 应该看起来像artwork/staging/rlj_amp244001_270.jpeg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-17
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多