如何获取Amazon S3中列表对象的上一页

12

我已成功为列出Amazon S3存储桶中的对象创建了下一个按钮。每次用户单击“下一个”按钮时,仅返回两个键。以下是代码:

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

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

1个回答

3
AWS S3 API没有任何参数指定返回标记之前的项目。在API的最新版本中,marker被重命名为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']);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接