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

限定条件下载(PHP SDK)

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

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

下载对象时,可以指定一个或多个限定条件,满足限定条件则下载,不满足条件则抛出异常不会触发下载行为。TOS 服务遵照 HTTP 规范,提供了多种限定条件,包括 If-Match、If-Unmodified-Since 等。

示例代码

您可以通过 GetObjectInput->setIfMatch 在下载时指定限定条件,示例代码如下:

<?php

// 假设使用 composer 安装
require_once __DIR__ . '/vendor/autoload.php';

use Tos\TosClient;
use Tos\Exception\TosClientException;
use Tos\Exception\TosServerException;
use Tos\Model\GetObjectInput;

$output = null;
try {
    $client = new TosClient([
        'region' => 'your region',
        'endpoint' => 'your endpoint',
        // 从环境变量中获取访问密钥
        'ak' => getenv('TOS_ACCESS_KEY'),
        'sk' => getenv('TOS_SECRET_KEY'),
    ]);
    
    $input = new GetObjectInput('bucket-test',  'key-test');
    // 指定 If-Match
    $input->setIfMatch('object etag');
    // 指定 If-None-Match
    // $input->setIfNoneMatch('none object etag');
    // 指定 If-Modified-Since,传入秒为单位的时间戳
    // $input->setIfModifiedSince(time() - 3600);
    // 指定 If-Unmodified-Since,传入秒为单位的时间戳
    // $input->setIfUnmodifiedSince(time() + 3600);
    $output = $client->getObject($input);
    echo $output->getRequestId() . PHP_EOL;
    // 获取对象长度
    echo $output->getContentLength() . PHP_EOL;
    // 获取对象 Content-Type
    echo $output->getContentType() . PHP_EOL;
    // 获取对象 ETag
    echo $output->getETag() . PHP_EOL;
    // 获取对象 StorageClass
    echo $output->getStorageClass() . PHP_EOL;
    // 获取对象 CRC64
    echo $output->getHashCrc64ecma() . PHP_EOL;
    // 获取对象用户自定义元数据
    foreach ($output->getMeta() as $k => $v) {
        echo $k . '=' . $v . PHP_EOL;
    }
    // 直接读取字符串
    echo $output->getContent()->getContents() . 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;
} finally {
    if($output){
        $output->getContent()->close();
    }
}