当前位置: 首页 > 知识库问答 >
问题:

AWS S3 Java SDK不复制文件到文件夹

华宇
2023-03-14

这里是Java 8。我有一个S3 bucket(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/ 复制到myapp-bucket/artwork/staging/目录,而是直接在/artwork下创建一个新文件,并将其命名为staging,并可能将图像的二进制内容复制到staging文件中。我哪里出错了?!我只想以myapp-bucket/artwork/staging/ --提前感谢!

共有1个答案

臧友樵
2023-03-14

S3没有文件夹/目录--它只是一个平面存储的糖。因此,您的destinationkey应该类似于artwork/staging/rlj_amp244001_270.jpeg

 类似资料:
  • 我正在尝试将xlsx文件从文档文件夹保存到应用程序文件夹。这是代码,但显示错误: 错误Domain=nscocaerordomain Code=260“无法打开文件”file1.xlsx,“因为没有这样的文件。”UserInfo={NSFilePath=file:///private/var/mobile/Containers/Data/Application/8AC91C23-3662-44FF

  • 使用Java8。 为了获得最佳性能,我尝试用复制文件,但很快发现它不支持汉字。例如: 代码打算从jar复制一个文件,但它抛出了一个异常(a“我的" 文件夹已提前创建): 问题是鎴戠殑" 甚至连一个中国人都看不懂,所以我正在寻找一个解决办法来处理汉字。 我也尝试了FileChannel,但失败了,意识到它用于直接文件,而不是在一个jar中的文件。我该怎么做?

  • 我想将文件salesjan2009.csv(存储在本地文件系统中,~/input/salesjan2009.csv)复制到HDFS(Hadoop分布式文件系统)主目录中 我编写了这段代码hduser@ubuntu:/usr/local/hadoop$hdfs dfs-copyfromlocal'/home/hduser/desktop/input/salesjan2009.csv'/hdfs-pa

  • rank ▲ ✰ vote url 50 404 65 510 url 复制文件 怎么在Python里赋值文件?在os下没找到复制的方法. shutil有许多的方法.其中之一就是: copyfile(src, dst) 把src文件的内容复制给dst.目的地址必须是可写的;否则将会出现IOError错误.如果dst已经存在,将会被覆盖.一些像字符或者块设备不能用这个方法赋值.src和dst是路径

  • 在Visual Studio 2017中,当点击<kbd>Ctrl</kbd><kbd<F5</kbd>运行我的ASP时。NET Framework Web API服务器,我得到: 在包管理器控制台中运行并不是永久的修复,因为当包文件丢失时,服务器错误会再次出现。我如何一劳永逸地摆脱此错误,以便在我重新打开、构建和运行我的Visual Studio解决方案时自动(默默地)重新安装所需的包? 重现错

  • 我有一个Windows文件夹结构和文件,如下所示 c:\源文件\file1.txt c:\源文件夹\subfolder1\file2.txt c:\源文件夹\子文件夹2\file3.txt 我想复制所有文件到目标文件夹,如下所示 c:\DestinationFile\file1.txt c:\DestinationFile\file2.txt c:\DestinationFile\file3.tx