详情页标题前

腾讯云对象存储快速入门

详情页1

下载与安装

相关资源

对象存储 COS 的 XML PHP SDK 源码下载地址:XML PHP SDKSDK 快速下载地址:XML PHP SDK示例 Demo 程序地址:PHP sampleSDK 文档中的所有示例代码请参见 SDK 代码示例SDK 更新日志请参见 ChangeLogSDK 常见问题请参见:PHP SDK 常见问题说明 如果您在使用 XML 版本 SDK 时遇到函数或方法不存在等错误,请先将 XML 版本 SDK 升级到最新版再重试。如果您仍在使用 JSON 版本 SDK,请 升级到 XML PHP SDK

环境依赖

PHP 5.6+
您可以通过
php -v 命令查看当前的 PHP 版本。
注意 如果您的 PHP 版本 >=5.3<5.6,请使用 v1.3 版本。cURL 扩展xml 扩展dom 扩展mbstring 扩展json 扩展
您可以通过
php -m 命令查看以上扩展是否已经安装好。
Ubuntu 系统中,您可以使用 apt-get 包管理器安装 PHP 的 相关 扩展,安装命令如下:

sudo apt-get install php-curl php-xml php-dom php-mbstring php-json

CentOS 系统中,您可以使用 yum 包管理器安装 PHP 的 cURL 扩展。

sudo yum install php-curl php-xml php-dom php-mbstring php-json

安装 SDK

SDK 安装有三种方式:Composer 方式Phar 方式源码方式

Composer 方式

推荐使用 Composer 安装 cos-php-sdk-v5,Composer 是 PHP 的依赖管理工具,允许您声明项目所需的依赖,然后自动将它们安装到您的项目中。说明 您可以在 Composer 官网 上找到更多关于如何安装 Composer,配置自动加载以及用于定义依赖项的其他最佳实践等相关信息。安装步骤1. 打开终端。2. 执行以下命令,下载 Composer。

curl -sS https://getcomposer.org/installer | php

3. 创建一个名为 composer.json 的文件,内容如下:

{ "require": {     "qcloud/cos-sdk-v5": ">=2.0" }}

4. 执行以下命令,使用 Composer 安装。

php composer.phar install

使用该命令后会在当前目录中创建一个 vendor 文件夹,里面包含 SDK 的依赖库和一个 autoload.php 脚本,方便在项目中调用。注意 目前已支持 Composer 根据当前 PHP 版本下载 guzzle6 或 guzzle7。guzzle7 版本支持 laravel8 框架。当 PHP 版本 >= 7.2.5时自动下载 guzzle7 版本,反之下载 guzzle6 版本。5. 通过 autoloader 脚本调用 cos-php-sdk-v5,在代码中引入 autoload.php 文件:

require '/path/to/sdk/vendor/autoload.php';

注意 执行 composer 安装后,这里的路径需更改为 autoload.php 文件所对应的路径,否则会调用不到相关方法。如您安装的路径为/Users/username/project,则项目中引用的路径应填写为/Users/username/project/vendor/autoload.php。至此,您的项目已经可以使用 COS XML PHP SDK 了。

Phar 方式

Phar 方式安装 SDK 的步骤如下:1. GitHub 发布页面 下载相应的 phar 文件。说明对于 PHP 版本 >= 5.6<7.2.5 ,请下载 cos-sdk-v5-6.phar,以使用 Guzzle6 版本。对于 PHP 版本 >=7.2.5 的请下载 cos-sdk-v5-7.phar,以使用 Guzzle7 版本。2. 在代码中引入 phar 文件:

require '/path/to/cos-sdk-v5-x.phar';

源码方式

源码方式安装 SDK 的步骤如下:1. SDK 下载页面 下载 cos-sdk-v5.tar.gz 压缩文件。说明对于 PHP 版本 >= 5.6<7.2.5 ,请下载 cos-sdk-v5-6.tar.gz,以使用 Guzzle6 版本。对于 PHP 版本 >=7.2.5 的请下载 cos-sdk-v5-7.tar.gz ,以使用 Guzzle7 版本。2. 解压后通过 autoload.php 脚本加载 SDK,在代码中引入 autoload.php 文件:

require '/path/to/sdk/vendor/autoload.php';

注意Source code 压缩包为 Github 默认打包的代码包,里面不包含 vendor 目录。请注意下载release包(cos-sdk-v5-x.tar.gz包)而不是Source包,也不要直接 clone 整个仓库。否则会缺失index.php以及vendor包。

开始使用

下面为您介绍如何使用 COS PHP SDK 完成一个基础操作,如初始化客户端、创建存储桶、查询存储桶列表、上传对象、查询对象列表、下载对象和删除对象。关于示例中的参数说明,请参见 存储桶操作对象操作 文档。

初始化

注意建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引原则,防止泄露目标存储桶或对象之外的资源。如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。若您使用 临时密钥 初始化,请用下面方式创建实例:

$tmpSecretId = "TmpSecretId"; //临时密钥的 SecretId,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048$tmpSecretKey = "TmpSecretKey"; //临时密钥的 SecretKey,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048$tmpToken = "TmpToken"; //临时密钥的 Token,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket$cosClient = new Qcloud\Cos\Client(    array(        'region' => $region,        'scheme' => 'https', //协议头部,默认为http        'credentials'=> array(            'secretId'  => $tmpSecretId,            'secretKey' => $tmpSecretKey,            'token' => $tmpToken)));

若您使用永久密钥初始化 COSClient,可以先在访问管理控制台中的 API 密钥管理页面 获取 SecretId、SecretKey,使用永久密钥适用于大部分的应用场景。

// SECRETID 和 SECRETKEY 请登录访问管理控制台进行查看和管理$secretId = getenv('COS_SECRET_ID'); //用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140$secretKey = getenv('COS_SECRET_KEY'); //用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140$region = "ap-beijing"; //用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket$cosClient = new Qcloud\Cos\Client(    array(        'region' => $region,        'scheme' => 'https', //协议头部,默认为 http        'credentials'=> array(            'secretId'  => $secretId ,            'secretKey' => $secretKey)));

注意 若未配置 HTTPS 证书,则需要删除 scheme 参数或填入 'scheme' => 'http';若填入 https 会出现 certificate problem。若您需要配置证书,可参考 PHP SDK 常见问题

创建存储桶

try {    $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID    $result = $cosClient->createBucket(array('Bucket' => $bucket));    //请求成功    print_r($result);} catch (\Exception $e) {    //请求失败    echo($e);}

查询存储桶列表

try {    //请求成功    $result = $cosClient->listBuckets();    print_r($result);} catch (\Exception $e) {    //请求失败    echo($e);}

上传对象

注意使用 putObject 接口上传文件(最大5G)。使用 Upload 接口分块上传文件,Upload 接口为复合上传接口,对小文件进行简单上传,对大文件进行分块上传。参数说明可参见 对象操作 文档。

# 上传文件## putObject(上传接口,最大支持上传5G文件)### 上传内存中的字符串try {    $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID    $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识    $result = $cosClient->putObject(array(        'Bucket' => $bucket,        'Key' => $key,        'Body' => 'Hello World!'));    print_r($result);} catch (\Exception $e) {    echo "$e\n";}
### 上传文件流try { $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识 $srcPath = "path/to/localFile";//本地文件绝对路径 $file = fopen($srcPath, "rb"); if ($file) { $result = $cosClient->putObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Body' => $file)); print_r($result); }} catch (\Exception $e) { echo "$e\n";}
## Upload(高级上传接口,默认使用分块上传最大支持50T)### 上传内存中的字符串try { $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识 $result = $cosClient->Upload( $bucket = $bucket, $key = $key, $body = 'Hello World!'); print_r($result);} catch (\Exception $e) { echo "$e\n";}
### 上传文件流try { $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识 $srcPath = "path/to/localFile";//本地文件绝对路径 $file = fopen($srcPath, 'rb'); if ($file) { $result = $cosClient->Upload( $bucket = $bucket, $key = $key, $body = $file); } print_r($result);} catch (\Exception $e) { echo "$e\n";}

查询对象列表

try {    $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID    $result = $cosClient->listObjects(array(        'Bucket' => $bucket    ));    // 请求成功    if (isset($result['Contents'])) {        foreach ($result['Contents'] as $rt) {            print_r($rt);        }    }} catch (\Exception $e) {    // 请求失败    echo($e);}

单次调用 listObjects 接口一次只能查询1000个对象,如需要查询所有的对象,则需要循环调用。

try {    $bucket = "examplebucket-1250000000"; //存储桶名称 格式:BucketName-APPID    $prefix = ''; //列出对象的前缀    $marker = ''; //上次列出对象的断点    while (true) {        $result = $cosClient->listObjects(array(            'Bucket' => $bucket,            'Marker' => $marker,            'MaxKeys' => 1000 //设置单次查询打印的最大数量,最大为1000        ));        if (isset($result['Contents'])) {            foreach ($result['Contents'] as $rt) {                // 打印key                echo($rt['Key'] . "\n");            }        }        $marker = $result['NextMarker']; //设置新的断点        if (!$result['IsTruncated']) {            break; //判断是否已经查询完        }    }} catch (\Exception $e) {    echo($e);}

下载对象

使用 getObject 接口下载文件。使用 getObjectUrl 接口获取文件下载 URL。

# 下载文件## getObject(下载文件)### 下载到内存try {    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID    $key = "exampleobject";  //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识    $result = $cosClient->getObject(array(        'Bucket' => $bucket,        'Key' => $key));    // 请求成功    echo($result['Body']);} catch (\Exception $e) {    // 请求失败    echo "$e\n";}
### 下载到本地try { $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识 $localPath = @"path/to/localFile";//下载到本地指定路径 $result = $cosClient->getObject(array( 'Bucket' => $bucket, 'Key' => $key, 'SaveAs' => $localPath));} catch (\Exception $e) { // 请求失败 echo "$e\n";}
### 指定下载范围/* * Range 字段格式为 'bytes=a-b' */try { $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识 $localPath = @"path/to/localFile";//下载到本地指定路径 $result = $cosClient->getObject(array( 'Bucket' => $bucket, 'Key' => $key, 'Range' => 'bytes=0-10', 'SaveAs' => $localPath));} catch (\Exception $e) { // 请求失败 echo "$e\n";}
## getObjectUrl(获取文件 UrL)try { $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID $key = "exampleobject"; //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识 $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); // 请求成功 echo $signedUrl;} catch (\Exception $e) { // 请求失败 print_r($e);}

删除对象

# 删除 object## deleteObjecttry {    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID    $key = "exampleobject";  //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识    $result = $cosClient->deleteObject(array(        'Bucket' => $bucket,        'Key' => $key,        'VersionId' => 'string'    ));    // 请求成功    print_r($result);} catch (\Exception $e) {    // 请求失败    echo($e);}# 删除多个 object## deleteObjectstry {    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID    $key1 = "exampleobject1";  //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识    $key2 = "exampleobject2";  //此处的 key 为对象键,对象键是对象在存储桶中的唯一标识    $result = $cosClient->deleteObjects(array(        'Bucket' => $bucket,        'Objects' => array(            array(                'Key' => $key1,            ),            array(                'Key' => $key2,            ),            //...        ),    ));    // 请求成功    print_r($result);} catch (\Exception $e) {    // 请求失败    echo($e);}



对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/145908.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云云直播媒体传输 SDK(TMIO SDK)

    简单介绍 TMIO SDK(Tencent Media IO SDK)是针对当前日益丰富的流媒体传输协议,对主流协议进行整合优化和扩展,为用户可以开发出稳定可用的媒体应用提供服务方便,摆脱繁重的多种协议的开发调试工作。TMIO SDK 当前已对 SRT、QUIC 等主流媒体协议 进行了优化扩展,同时新增自研传输控制协议 ETC(全称:Elastic Tran…

    2023年12月9日
  • 腾讯云Serverless SSR控制台部署应用-云淘

    操作场景 通过 Serverless 应用控制台,您可以快速创建 Web 应用模板,或导入本地已有项目,实现传统 Web 框架的快速迁移、持续部署、二次开发、监控运维,在控制台完成应用项目的闭环开发体验。 权限配置 主账号授权 1. 主账号登录 Serverless 应用控制台,单击前往授权进入访问管理控制台。 2. 在访问管理控制台的角色列表页,查看 SL…

    2023年12月9日
  • 腾讯云TDSQL-C MySQL版查看备份列表

    集群创建之初,TDSQL-C MySQL 版会按照默认的备份设置(根据日志生成速率等因素,7*24不间断进行快照备份,快照备份文件生成周期间隔6~48小时不等,默认保留7天)自动备份数据,您也可以通过控制台对集群进行自动备份设置或进行手动备份,备份文件及相关信息可通过备份列表进行查阅。本文为您介绍通过控制台查看备份列表的方法。 操作步骤 1. 登录 TDSQ…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储图片压缩概述

    概述 图片压缩指在图片质量保持不变的情况,尽可能的减小图片大小,以达到节省图片存储空间、减少图片访问流量、提升图片访问速度的效果。对象存储(Cloud Object Storage,COS)基于 数据万象(Cloud Infinite,CI) 产品推出了多种图片压缩功能,您可以按自身的业务场景选择不同的压缩方式,达到图片压缩的目的。目前支持的压缩方式如下所示…

    腾讯云 2023年12月9日
  • 腾讯云对象存储清单

    简介 本文档提供关于清单的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket inventory 设置清单任务 设置存储桶的清单任务 GET Bucket inventory 查询清单任务 查询存储桶的清单任务 DELETE Bucket inventory 删除清单任务 删除存储桶的清单任务 设置清单任务 功能说明 PU…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。