本文介绍拷贝对象相关的示例代码。
您可以通过 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; }