Javascript 将S3中的对象从一个文件夹复制到同一个bucket中的另一个文件夹

Javascript 将S3中的对象从一个文件夹复制到同一个bucket中的另一个文件夹,javascript,amazon-web-services,amazon-s3,copy,Javascript,Amazon Web Services,Amazon S3,Copy,我正在尝试将一个对象从一个文件夹复制到S3存储桶中的另一个文件夹。我正在用它来实现这个目标 查看文档后,我正在执行一个请求,其中我将发送以下参数: { Bucket:“Bucket name”, CopySource:“bucket name/desarrolo/1/Fraccionamiento/3/Vivienda/101/Acuse%20Vendedores.pdf”, 关键词:“权宜之计/2017/Queretaro/Febrero/226/Acuse%20Vendedores.pdf”

我正在尝试将一个对象从一个文件夹复制到S3存储桶中的另一个文件夹。我正在用它来实现这个目标

查看文档后,我正在执行一个请求,其中我将发送以下参数:

{
Bucket:“Bucket name”,
CopySource:“bucket name/desarrolo/1/Fraccionamiento/3/Vivienda/101/Acuse%20Vendedores.pdf”,
关键词:“权宜之计/2017/Queretaro/Febrero/226/Acuse%20Vendedores.pdf”,
ACL:“公共读取”
}
然而,我不断地发现这个错误:

NoSuchKey:指定的密钥不存在


不知道我做错了什么。错误表明不存在这样的密钥。在我的参数中,键显然不存在,因为我希望新对象复制到该位置。我甚至尝试过事先手动创建新的目标文件夹。就我对上面提到的文档的理解而言,关键是目标。我应该为密钥设置什么值?

您真正想要复制的是
Acuse%20Vendedores
吗?这看起来像URL转义了。

这是我上传文件到S3后从AWS获得的文件密钥。所以,是的,这就是我想要复制的。AWS S3转义键名。根据这个答案,似乎符号会导致S3%20从空格字符转义出现问题,所以我假设它是类似的。我认为您对某个东西感兴趣,我只是假设键名是正确的,因为这是我从S3返回的键名,对象的链接被转义,并且它可以工作。我会查一查,然后再报告。谢谢您是对的,这与转义的空白有关
%20
。因此,在我上传到S3之前,请注意您发布的链接中提到的避免使用的字符。在此之后,我不再出现
NoSuchKey
错误,对象被正确复制到新文件夹中。那么,如何更新现有对象的CacheControl呢?我尝试过这个方法,但得到的错误如下:指定的键不存在$response=$OBJ_aws_s3->copyObject(数组('Bucket'=>$Bucket,'key'=>$key,'CopySource'=>urlencode($Bucket.'/'.$foldername./'.$key),'CacheControl'=>max age=94608000','MetadataDirective'=>REPLACE',);