追加上传可实现对同一个对象追加数据内容的功能。本文介绍追加上传的示例代码。
追加上传时,对象的大小限制说明如下:
您可以通过 TosClient->appendObject 实现追加上传,示例代码如下:
<?php // 假设使用 composer 安装 require_once __DIR__ . '/vendor/autoload.php'; use Tos\TosClient; use Tos\Exception\TosClientException; use Tos\Exception\TosServerException; use Tos\Model\AppendObjectInput; use Tos\Model\Enum; try { $client = new TosClient([ 'region' => 'your region', 'endpoint' => 'your endpoint', // 从环境变量中获取访问密钥 'ak' => getenv('TOS_ACCESS_KEY'), 'sk' => getenv('TOS_SECRET_KEY'), ]); // 上传字符串 $content = 'hello world' $input = new AppendObjectInput('bucket-test', 'key-test'); // 设置对象 ACL,仅第一次追加上传有效 $input->setACL(Enum::ACLPublicRead); // 设置对象 StorageClass,仅第一次追加上传有效 $input->setStorageClass(Enum::StorageClassStandard); // 设置对象自定义元数据,仅第一次追加上传有效 $input->setMeta(['aaa' => 'bbb', '中文键' => '中文值']); // 设置对象 Content-Type,仅第一次追加上传有效 $input->setContentType('text/plain'); // 每次追加上传的数据大小不能小于 128 KB,这里在内存中构造一段长字符串 $content = ''; for ($i = 0; $i < 20000; $i++) { $content .= uniqid(); } $input->setContent($content); $output = $client->appendObject($input); echo $output->getRequestId() . PHP_EOL; // 下一次追加上传的起始位置 $nextAppendOffset = $output->getNextAppendOffset(); $input->setOffset($nextAppendOffset); $content2 = ''; for ($i = 0; $i < 20000; $i++) { $content2 .= uniqid(); } $input->setContent($content2); $output = $client->appendObject($input); echo $output->getRequestId() . PHP_EOL; echo $output->getNextAppendOffset() . 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; }