本文介绍列举对象和多版本对象的示例代码。
您可以通过 TosClient->listObjects 和 TosClient->listObjectVersions 分别实现列举对象和列举多版本对象,示例代码如下:
<?php // 假设使用 composer 安装 require_once __DIR__ . '/vendor/autoload.php'; use Tos\TosClient; use Tos\Exception\TosClientException; use Tos\Exception\TosServerException; use Tos\Model\ListObjectsInput; use Tos\Model\ListObjectVersionsInput; try { $client = new TosClient([ 'region' => 'your region', 'endpoint' => 'your endpoint', // 从环境变量中获取访问密钥 'ak' => getenv('TOS_ACCESS_KEY'), 'sk' => getenv('TOS_SECRET_KEY'), ]); // 列举对象 $input = new ListObjectsInput('bucket-test'); // 设置一次列举返回的对象最大数量,最大值 1000 $input->setMaxKeys(100); // 设置列举对象的前缀 $input->setPrefix('prefix'); // 设置列举对象的起始位置 $input->setMarker(''); // 设置列举对象的分隔符,用于模拟列举目录时固定为 '/' $input->setDelimiter('/'); $output = $client->listObjects($input); echo $output->getRequestId() . PHP_EOL; // 获取对象列表 foreach ($output->getContents() as $content) { echo $content->getKey() . PHP_EOL; echo $content->getSize() . PHP_EOL; echo $content->getETag() . PHP_EOL; } // 获取公共前缀 foreach ($output->getCommonPrefixes() as $commonPrefix) { echo $commonPrefix->getPrefix() . PHP_EOL; } // 获取下次列举的起始位置 echo $output->getNextMarker() . PHP_EOL; // 列举多版本对象 $input = new ListObjectVersionsInput('bucket-test'); // 设置列举多版本对象的起始位置 $input->setKeyMarker(''); $input->setVersionIDMarker(''); // 设置列举对象的分隔符,用于模拟列举目录时固定为 '/' $input->setDelimiter('/'); $output = $client->listObjectVersions($input); echo $output->getRequestId() . PHP_EOL; // 获取多版本对象列表 foreach ($output->getVersions() as $version) { echo $version->getKey() . PHP_EOL; echo $version->getVersionID() . PHP_EOL; echo $version->getSize() . PHP_EOL; echo $version->getETag() . PHP_EOL; } // 获取删除标记列表 foreach ($output->getDeleteMarkers() as $deleteMarker) { echo $deleteMarker->getKey() . PHP_EOL; echo $deleteMarker->getVersionID() . PHP_EOL; } // 获取公共前缀 foreach ($output->getCommonPrefixes() as $commonPrefix) { echo $commonPrefix->getPrefix() . PHP_EOL; } // 获取下次列举的起始位置 echo $output->getNextKeyMarker() . PHP_EOL; echo $output->getNextVersionIDMarker() . PHP_EOL; } catch (TosClientException $ex) { echo $ex->getMessage() . PHP_EOL; } catch (TosServerException $ex) { echo $ex->getRequestId() . PHP_EOL; echo $ex->getStatusCode() . PHP_EOL; echo $ex->getErrorCode() . PHP_EOL; }