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

拷贝对象(PHP SDK)

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

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

本文介绍拷贝对象相关的示例代码。

示例代码

您可以通过 TosClient->copyObject 实现拷贝对象,示例代码如下:

<?php

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

use Tos\TosClient;
use Tos\Exception\TosClientException;
use Tos\Exception\TosServerException;
use Tos\Model\CopyObjectInput;
use Tos\Model\Enum;

try {
    $client = new TosClient([
        'region' => 'your region',
        'endpoint' => 'your endpoint',
        // 从环境变量中获取访问密钥
        'ak' => getenv('TOS_ACCESS_KEY'),
        'sk' => getenv('TOS_SECRET_KEY'),
    ]);
    
    $input = new CopyObjectInput('bucket-test',  'key-test',  'src-bucket',  'src-key');
    // 设置目标对象 ACL
    $input->setACL(Enum::ACLPublicRead);
    // 设置目标对象的 StorageClass
    $input->setStorageClass(Enum::StorageClassIa);
    // 设置复制时重写目标对象元数据,仅当设置为该参数时,才能重写目标对象元数据,否则目标对象元数据会直接从源对象继承
    $input->setMetadataDirective(Enum::MetadataDirectiveReplace);
    // 设置目标对象的用户自定义元数据
    $input->setMeta(['aaa' => 'bbb', '中文键' => '中文值']);
    // 设置目标对象的 HTTP 标准属性
    $input->setContentDisposition('test-disposition');
    $input->setExpires(time() + 3600);
    $input->setContentEncoding('test-encoding');
    $input->setContentLanguage('test-language');
    $input->setContentType('text/plain');
    
    $output = $client->copyObject($input);
    echo $output->getRequestId() . 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;
}