我已经成功创建了下一个按钮,用于列出Amazon S3存储桶中的对象.每次用户点击"下一步"按钮时,只会返回两个键.代码如下
$response = $s3->list_objects('bucket_name', array(
'prefix' => 'small/',
'max-keys' => 2,
'marker' => 'small/blah.jpg'
));
Run Code Online (Sandbox Code Playgroud)
上面的代码将在标记后返回2个键.但我无法创建上一个按钮.是否有任何东西可以在标记之前返回前2个键?或者你能建议任何更好的解决方案.我正在使用PHP SDK.谢谢
AWS S3 API 没有任何指定返回标记之前的项目的参数。在最新版本的 API 中,marker被重命名为start-after参数,强调您只能获得参数值旁边的项目。
要实现上一个按钮,您应该在数据库或缓存中存储特定请求的连续标记列表。例如可以有 3 列:
request_hash | marker_key | previous_marker_key
Run Code Online (Sandbox Code Playgroud)
处理当前请求,您可以将行添加到表中并获取行。下面是一些伪代码:
$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']);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |