如何使用javascript更新s3中现有对象上的元数据?

如何使用javascript更新s3中现有对象上的元数据?,javascript,amazon-web-services,amazon-s3,aws-sdk,aws-sdk-nodejs,Javascript,Amazon Web Services,Amazon S3,Aws Sdk,Aws Sdk Nodejs,我尝试使用copyObject方法更新视频中的元数据。我的视频文件最终被删除,元数据被更新。 为什么要删除我的文件 我在下面附上了一些代码片段: 我成功请求预签名的url 让参数={ Bucket:bucketName, 键:filePath, Expires:this.expirement, CopySource:`${bucketName}/${filePath}/`, 元数据:req.body.Metadata, MetadataDirective:“替换” }; this.

我尝试使用copyObject方法更新视频中的元数据。我的视频文件最终被删除,元数据被更新。 为什么要删除我的文件

我在下面附上了一些代码片段:

我成功请求预签名的url

让参数={
Bucket:bucketName,
键:filePath,
Expires:this.expirement,
CopySource:`${bucketName}/${filePath}/`,
元数据:req.body.Metadata,
MetadataDirective:“替换”
};      
this.s3.getSignedUrl('copyObject',params,(err,data)=>{
如果(错误){
console.log('err',err);
资源状态(400)。发送(错误);
}否则{
资源状态(200)。发送(数据);
}
});

我刚刚想好了……当我将PUT请求发送到我的预签名url时,我添加了一个“x-amz-copy-source”头,它就工作了!我的元数据已更新,并且我的原始文件不会被覆盖和删除。 我使用了来自的文档

所以我的PUT请求现在看起来像

let response:any=等待此消息。$http({
url:signedUrl,
方法:'放',
标题:{
'x-amz-copy-source':`/${bucketName}/${key}`
}

});我刚想出来……当我将PUT请求发送到我的预签名url时,我添加了一个“x-amz-copy-source”头,它就工作了!我的元数据已更新,并且我的原始文件不会被覆盖和删除。 我使用了来自的文档

所以我的PUT请求现在看起来像

let response:any=等待此消息。$http({
url:signedUrl,
方法:'放',
标题:{
'x-amz-copy-source':`/${bucketName}/${key}`
}

});原始代码中的问题是
`${bucketName}/${filePath}/`
中的尾部
/
原始代码中的问题是
`${bucketName}/${filePath}/`
中的尾部
/