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

时间:2011-09-13 03:52:32

标签: amazon-s3 amazon-web-services

下面的代码可以从AWS 3获得1个单个文件,但是文件夹呢?

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);

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

下面的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');
    }
});

有关详情,请参阅

答案 2 :(得分:1)

从 AWS s3 复制整个目录的正确方法是:

$ aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive

在此处查阅文档以获取更多信息和其他标签,例如 --inlcude 或 --exclude:

<块引用>

https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-transfer-between-buckets/