Ответ 1
API AWS S3 API не имеет параметров, указывающих возврат элементов перед маркером. В новейшей версии API marker
был переименован в параметр start-after
, который подчеркивает тот факт, что вы получаете только элементы рядом с значением параметра.
Чтобы реализовать предыдущую кнопку, вы должны сохранить последовательный список маркеров для конкретного запроса в БД или кеше. Например, могут быть три столбца:
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']);