Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在S3中列出两个特定文件夹之间的对象_Php_Amazon Web Services_Amazon S3 - Fatal编程技术网

Php 如何在S3中列出两个特定文件夹之间的对象

Php 如何在S3中列出两个特定文件夹之间的对象,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我想知道是否可以列出两个特定文件夹之间的对象 $objects = $client->getIterator('ListObjects', array( "Bucket" => $bucket, "Prefix" => "2016/09/23" )); 上面的代码将列出该特定文件夹的对象。但我需要的是,如果有一种方法可以列出两个文件夹之间的对象。i、 e.,2016/09/23至2017/1/14。我想要这两个文件夹之间的对象列表。有可能吗???我不知道亚马

我想知道是否可以列出两个特定文件夹之间的对象

$objects = $client->getIterator('ListObjects', array(
    "Bucket" => $bucket,
    "Prefix" => "2016/09/23"
)); 

上面的代码将列出该特定文件夹的对象。但我需要的是,如果有一种方法可以列出两个文件夹之间的对象。i、 e.,2016/09/23至2017/1/14。我想要这两个文件夹之间的对象列表。有可能吗???

我不知道亚马逊是否提供了这一功能,我怀疑它没有,所以一个解决方案是循环所有日期:

$start_date = '2016/09/23';
$end_date = '2017/1/14';
$all_objs = array();

$date = $start_date;

while (strtotime($date) <= strtotime($end_date)) {
    $date = date ("Y/m/d", strtotime("+1 day", strtotime($date)));
    $ret_objs = $client->getIterator('ListObjects', array(
                                              "Bucket" => $bucket,
                                              "Prefix" => $date,
                                        ));

    foreach ($ret_objs as $obj) {
         array_push($all_objs, $obj);
    }
}
$start_date='2016/09/23';
$end_日期='2017/1/14';
$all_objs=array();
$date=$start\u date;
while(strotime($date)getIterator('ListObjects',数组(
“桶”=>美元桶,
“前缀”=>$date,
));
foreach($ret_objs作为$obj){
数组推送($all_obj,$obj);
}
}
我没有一个S3实例要测试,但是你可以在你这边检查和调整它


另外,在构建日期之前,请确保设置时区
date\u default\u timezone\u set()

而(strotime($start\u date))您只需返回所有对象的列表,并在自己的代码中执行日期检查。这样会更快,因为它会有更少的API调用(取决于您拥有的文件数量)。