繁体   English   中英

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

[英]How to update metadata on an existing object in s3 using javascript?

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

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

我成功请求了预签名的网址

 let params = { Bucket: bucketName, Key: filePath, Expires: this.expiration, CopySource: `${bucketName}/${filePath}/`, Metadata: req.body.metadata, MetadataDirective: 'REPLACE' }; this.s3.getSignedUrl('copyObject', params, (err, data) => { if (err) { console.log('err', err); res.status(400).send(err); } else { res.status(200).send(data); } }); 

然后,将PUT请求成功发送到已签名的url。

 let response: any = await this.$http({ url: signedUrl, method: 'PUT' }); 

但是当我转到s3控制台时,我看到我的视频文件已被删除并且元数据已更新。 我究竟做错了什么? 谢谢。

我只是想通了...。当我将PUT请求发送到预先签名的url时,我添加了一个“ x-amz-copy-source”标头即可使用! 我的元数据已更新,并且我的原始文件没有被覆盖和删除。 我从这里使用了文档。

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

 let response: any = await this.$http({ url: signedUrl, method: 'PUT', headers: { 'x-amz-copy-source': `/${bucketName}/${key}` } }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM