【问题标题】:How to get previous page of list objects in Amazon S3如何在 Amazon S3 中获取列表对象的上一页
【发布时间】:2012-12-25 12:20:27
【问题描述】:

我已成功创建了用于在 Amazon S3 存储桶中列出对象的下一步按钮。每次用户单击 NEXT 按钮时,只会返回两个键。代码如下

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

上面的代码将在标记之后返回 2 个键。但我无法创建上一个按钮。有什么东西可以在标记之前返回前两个键吗?或者你能建议任何更好的解决方案。我正在使用 PHP SDK。谢谢

【问题讨论】:

    标签: php amazon-s3


    【解决方案1】:

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

    要实现上一个按钮,您应该将特定请求的标记顺序列表存储在数据库或缓存中。例如,可能有 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']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2012-09-18
      • 2018-09-24
      • 2012-09-12
      • 2021-08-27
      相关资源
      最近更新 更多