我使用了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"
请告知。
答案 0 :(得分:3)
Key
参数应该包含"路径"字符串,因为S3存储桶文件的完整路径引用:
let params = { Key: `${bucketPath}/${fileName}`, Bucket: bucketName };
我冒昧地使用模板引号(``)。另外,请注意我是如何添加" /"分隔符,请检查它是否已包含在bucketPath
。