You need to enable JavaScript to run this app.
导航

列举对象(PHP SDK)

最近更新时间2024.02.04 18:30:59

首次发布时间2022.11.16 14:58:44

本文介绍列举对象和多版本对象的示例代码。

示例代码

您可以通过 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;
}