AWS S3 SDK获取文件夹而不是文件

问题描述:

下面的代码可以从AWS 3获得1个单个文件,但是,文件夹又是如何呢?AWS S3 SDK获取文件夹而不是文件

var _key:int=Account.lessons[dl_i].id; 
var dest:String = Conf.Dir+_key; 
var request:GetObjectRequest = new 
GetObjectRequest().WithBucketName(Conf.bucketName).WithKey(_key+""); 
var response:GetObjectResponse = client.GetObject(request); 
response.WriteResponseStreamToFile(dest); 

在Amazon S3中没有文件夹这样的东西。这是一个“平面”文件系统。越接近文件夹,您的文件名就会加上前缀foo/bar/filename.txt。 尽管有几个S3工具会显示你的东西,就像它们被包含在文件夹中一样,但这个概念在S3上不存在。

请参阅此相关的主题:Amazon s3 Folders Problem

的JavaScript代码下面会计算内部的“文件夹”的文件;实际上,它会列出共享相同部分名称的对象,因为@Viccari指出没有文件夹。由于data.Contents将是一个包含“文件夹内文件”详细信息的数组,因此您可以“获取文件夹”。

var bucket = 'the_bucket_name'; 
var path_to_folder = 'path/to/the/folder/'; 
var params= {Bucket: bucket, Delimiter: path_to_folder }; 
s3.listObjects(params, function (err, data) { 
    if (err) { 
     console.log('Could not load objects from S3', err); 
    } else { 
     console.log('Loaded ' + data.Contents.length + ' items from S3'); 
    } 
}); 

有关更多细节,参见