节点js中的AWS开发工具包 - 从子目录获取对象

时间:2018-03-26 13:30:59

标签: node.js aws-sdk

我使用了aws-sdk用于Nodejs,我试图获得一个位于子目录中的对象。 但是我没有收到任何文件。

文件路径为:mybucket/subfoldername/file.txt

getObject = function getListObjects(bucketName, bucketPath, fileName) {
return new Promise((resolve, reject) => {
    let params = {Key: fileName, Bucket: bucketName+bucketPath};
    s3.getObject(params, function (error, data) {
        if (error){
            console.log(`Can't connect to S3. S3 Path = [${fileName}] to Bucket = [${params.Bucket}]`, error);
            return reject(error);
        } else {
            console.log(`Found files in S3. S3 Path =[${fileName}] to Bucket = [${params.Bucket}]`);
            return resolve(data.Contents);
        }
    });
});

};

我传递的论据是:

bucketName: "mybucket"
bucketPath: "/subfoldername"
fileName: "file.txt"

请告知。

1 个答案:

答案 0 :(得分:3)

Key参数应该包含"路径"字符串,因为S3存储桶文件的完整路径引用:

let params = { Key: `${bucketPath}/${fileName}`, Bucket: bucketName };

我冒昧地使用模板引号(``)。另外,请注意我是如何添加" /"分隔符,请检查它是否已包含在bucketPath