2017-04-04 33 views
0

试图找出AWS S3 API并失败悲惨...AWS S3 API - 对象不包含元数据

我目前有一个包含大量视频的存储桶。

我需要请求所有的视频作为一个对象,这将有我上传后设置的视频元数据,以及共享视频的链接。

问题是我得到的对象没有任何以上的...

什么Iv'e走到这一步 -

AWS.config.update({accessKeyId: 'id', secretAccessKey: 'key', region: 'eu- 
west-1'}); 
var s3 = new AWS.S3(); 

var params = { 
Bucket: 'Bucket-name', 
Delimiter: '/', 
Prefix: 'resource/folder-with-videos/' 

} 

s3.listObjects(params, function (err, data) { 
if(err)throw err; 
console.log(data); 
}); 

感谢您的阅读:)

更新 - 发现使用getObject并将ExposeHeader添加到CORS设置时,我确实可以获取我设置的元数据。 问题是getObject只适用于特定的对象(视频在我的情况下)。

任何想法如何我可以得到所有的对象像listObject和每个对象的值,就像我做的getObject?

只有解决办法,我能想到的是做的ListObject获得所有对象的列表,然后通过这个结果对每个对象做一个AJAX的getObject?... RIP UX 谢谢:)

回答

0

一首先要理清几件事。

根据文档,http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjects-property listObjects API返回回调参数中提到的内容。使用分隔符会导致S3仅列出给定前缀下一个级别的对象。它不会递归地遍历所有对象。

为了获得URL,您可以使用http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property。我不确定你的元数据是什么意思。

+0

上传文件时,您可以添加要附加到文件的元数据(键值对)。这是我想要的。 我想我找到了这样做没有它寿,名称应该是足够好的,尽管结尾(文件名) ty tho :) url本身应该是固定的 – Ben

+0

apprently,这是不够的..如果你可以看看我的帖子更新。谢谢 – Ben

+0

getObject将获取对象的内容。如果您正在寻找在网页中加载视频,那么getSignedUrl是正确的方法。但是,如果你想下载视频,getObject是正确的。这就是说,你无法通过S3 SDK中的单个请求列出和“获取”多个对象。因此,您首先列出对象,然后为每个对象列出getObject。如果您只是想要元数据,请查看'headObject'一次。 – nightgaunt