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

Node.js 获取位于特定S3文件夹下的对象列表,node.js,amazon-s3,aws-sdk,aws-sdk-nodejs,Node.js,Amazon S3,Aws Sdk,Aws Sdk Nodejs,我尝试使用一个查询字符串获取S3 bucket中特定文件夹下的对象列表,该查询字符串以foldername为参数,并使用Node JS aws sdk列出与该特定文件夹匹配的所有对象 例如: 请建议如何实现此功能。您可以在aws sdk中调用getObject或listObjectsV2时指定前缀 var params = { Bucket: 'STRING_VALUE', /* required */ Prefix: 'STRING_VALUE' // Can be your fol

我尝试使用一个查询字符串获取S3 bucket中特定文件夹下的对象列表,该查询字符串以foldername为参数,并使用Node JS aws sdk列出与该特定文件夹匹配的所有对象

例如:


请建议如何实现此功能。

您可以在aws sdk中调用
getObject
listObjectsV2
时指定前缀

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没有文件夹。它只是一个前缀。它向您显示文件夹结构,使您也可以轻松地导航和查看文件


来源:

您忘了提到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")
                })
            }
        })
var参数={
Bucket:Bucket\u名称,
分隔符:“/”,
前缀:“foldername/”
};
s3Bucket.listObjects(参数、函数(错误、数据){
如果(错误){
return“查看相册时出错:”+err.message
}否则{

console.log(data.Contents,“从循环中的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'])        
}
const s3=new AWS.s3();
常量参数={
Bucket:bucketname,
分隔符:“/”,
前缀:s3Folder+'/'
};
const data=wait s3.listObjects(params.promise();
for(让index=1;index
就像一个符咒!在上面的例子中,需要注意的是前缀“foldername/”的末尾有“/”。否则它就不起作用了。在我的例子中,它列出了文件夹中的所有文件,但文件夹本身也有。看起来文件夹总是排在第一位,而不是依靠
index=1
跳过文件夹键,you可以在params对象中使用
StartAfter:s3Folder+'/'
。StartAfter设置起始S3键值,允许循环从标准
0
进行迭代。