Php 如何在AmazonS3中获取列表对象的上一页

Php 如何在AmazonS3中获取列表对象的上一页,php,amazon-s3,Php,Amazon S3,我已经成功地创建了用于在AmazonS3 bucket中列出对象的next按钮。每次用户单击“下一步”按钮时,只返回两个键。代码如下 $response = $s3->list_objects('bucket_name', array( 'prefix' => 'small/', 'max-keys' => 2, 'marker' => 'small/blah.jpg'

我已经成功地创建了用于在AmazonS3 bucket中列出对象的next按钮。每次用户单击“下一步”按钮时,只返回两个键。代码如下

    $response = $s3->list_objects('bucket_name', array(
                'prefix' => 'small/',
                'max-keys' => 2,
                'marker' => 'small/blah.jpg'
            ));

上述代码将在标记后返回2个键。但我无法创建“上一个”按钮。是否有任何东西可以在标记之前返回前2个键?或者你能提出更好的解决方案吗。我正在使用PHPSDK。谢谢

AWS S3 API没有任何参数指定在标记之前返回项目。在最新版本的API中,
标记
被重命名为
start after
参数,该参数强调您只能获得参数值旁边的项

要实现上一个按钮,您应该在DB或缓存中存储特定请求的标记的顺序列表。可以有3列,例如:

request_hash | marker_key | previous_marker_key
处理当前请求时,可以将行添加到表中并获取行。下面是一些伪代码,它可能是这样的:

$requestHash = sha1(serialize([$bucketName, $prefix, $delimiter]));
$markerForPreviousPage = $dbProvider
     ->fetchPreviousMarker($requestHash, $_GET['current_marker']);
$markerForNextPage = $keysFromS3[count($keysFromS3) - 1];
// here you will add values respectively to the columns request_hash, marker_key, previous_marker_key
$dbProvider
     ->addNewMarker($requestHash, $markerForNextPage, $_GET['current_marker']);