使用headObject从S3 File获取x-amz-meta

时间:2015-04-30 03:31:47

标签: javascript amazon-web-services amazon-s3 metadata bucket

我在S3上有一个带有一些元数据的文件 x-amz-meta-description ="一些描述" 我将文件上传到S3时包含了此元数据。 如果我使用亚马逊控制台检查元数据,那么元数据就在那里。 接下来,我在CORS配置中添加了以下内容以访问标题:

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>

在我的网络应用中,我试图检查文件的标题。我使用以下javascript代码:

AWS.config.update({accessKeyId: 'XXX', secretAccessKey: 'YYY'})
var bucket = new AWS.S3({params: {Bucket: 'zzz'}});
var params = {Bucket: 'zzz',Key: 'content/myfile.doc'};
bucket.headObject(params, function (err, data) {
    if (err)
        console.log(err, err.stack);
    else
        console.log(data);
});

运行代码数据后。元数据为空。 是否有任何其他配置来获取与文件关联的元数据?我做错了什么?

全部谢谢

PS:我使用了getObject函数,但元数据仍然是空的。

2 个答案:

答案 0 :(得分:4)

您需要公开这样的自定义标题:

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>x-amz-meta-description</ExposeHeader>
</CORSRule>

添加ExposeHeader帮助我解决了这个问题。

答案 1 :(得分:0)

元数据仍然存在缺陷,此链接提供的修补程序无效:2017-05-07T03:34:17.319Z

允许标头Made in CORS修复了在HTTP请求中显示的标头,但不在回调中。我自己最终散布了这个对象。