ПОЛУЧИТЬ список объектов, расположенных в определенной папке S3 - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь получить список объектов, расположенных в определенной папке в корзине S3, используя строку запроса, которая принимает имя папки в качестве параметра, и перечислить все объекты, которые соответствуют этой конкретной папке, с помощью Node JS aws-sdk

Например: http://localhost:3000/listobjects?foldername=xxx

Подскажите, пожалуйста, как реализовать эту функцию.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Вы забыли упомянуть папку в ведре 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")
                })
            }
        })
0 голосов
/ 26 апреля 2019

Начиная с 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'])        
}
0 голосов
/ 16 мая 2018

Вы можете указать префикс при вызове getObject или listObjectsV2 в aws-sdk

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

...