You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
对象存储

对象存储

复制全文
下载 pdf
下载对象
普通下载(PHP SDK)
复制全文
下载 pdf
普通下载(PHP SDK)

普通下载同样使用 Psr\Http\Message\StreamInterface 作为对象的数据源,本文介绍普通下载的示例代码。

示例代码

您可以通过 TosClient->getObject 获取下载对象的数据源,示例代码如下:

<?php

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

use Tos\TosClient;
use Tos\Exception\TosClientException;
use Tos\Exception\TosServerException;
use Tos\Model\GetObjectInput;
use GuzzleHttp\Psr7\Utils;

$output = null;
$file = 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');
    $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;
    $output->getContent()->close();
    
    // 下载到本地文件
    $file = fopen('local_file_path', 'w');
    $input = new GetObjectInput('bucket-test',  'key-test');
    $output = $client->getObject($input);
    echo $output->getRequestId() . PHP_EOL;
    // 流式写入到本地文件
    Utils::copyToStream(Utils::streamFor($output->getContent()), Utils::streamFor($file));
    
} 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();
    }
    if (is_resource($file)) {
        fclose($file);
    }
}
最近更新时间:2024.02.04 18:30:59
这个页面对您有帮助吗?
有用
有用
无用
无用