获取位于特定S3文件夹下的对象列表

时间:2018-05-16 09:09:31

标签: node.js amazon-s3 aws-sdk aws-sdk-nodejs

我正在尝试使用查询字符串获取位于S3存储桶中特定文件夹下的对象列表,该查询字符串将foldername作为参数并使用Node JS aws -sdk列出与该特定文件夹匹配的所有对象

例如:http://localhost:3000/listobjects?foldername=xxx

请建议如何实施此功能。

3 个答案:

答案 0 :(得分:5)

您可以在aws-sdk中调用getObjectlistObjectsV2时指定前缀

var params = {
  Bucket: 'STRING_VALUE', /* required */
  Prefix: 'STRING_VALUE'  // Can be your folder name
};
s3.listObjectsV2(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

顺便说一句,S3没有文件夹。它只是一个前缀。它会向您显示文件夹结构,以便您轻松浏览和查看文件。

来源:AWS SDK Javascript

答案 1 :(得分:5)

您忘了在s3存储桶中提及文件夹,反正此代码对我有用

var params = {
Bucket:Bucket_Name,
Delimiter: '/',
Prefix: 'foldername/'
};

s3Bucket.listObjects(params, function(err, data) {
            if (err) {
                return 'There was an error viewing your album: ' + err.message
            }else{
                console.log(data.Contents,"<<<all content");

                data.Contents.forEach(function(obj,index){
                    console.log(obj.Key,"<<<file path")
                })
            }
        })

答案 2 :(得分:1)

从循环中的index = 1开始,将排除文件夹本身,而仅列出该文件夹中的文件:

const s3 = new AWS.S3();

const params = {
    Bucket: bucketname,
    Delimiter: '/',
    Prefix: s3Folder + '/'
};

const data = await s3.listObjects(params).promise();

for (let index = 1; index < data['Contents'].length; index++) {
    console.log(data['Contents'][index]['Key'])        
}
相关问题