接口文档

最近更新时间: 2024-06-12 15:06:00

存储桶操作

简介

本文档提供关于存储桶的基本操作和访问控制列表(ACL)的相关 API 概览以及 SDK 示例代码。

基本操作

API 操作名 操作描述
PUT Bucket 创建存储桶 在指定账号下创建一个存储桶
HEAD Bucket 检索存储桶及其权限 检索存储桶是否存在且是否有权限访问
DELETE Bucket 删除存储桶 删除指定账号下的空存储桶

访问控制列表(ACL)

API 操作名 操作描述
PUT Bucket acl 设置存储桶 ACL 设置指定存储桶的访问权限控制列表(ACL)
GET Bucket acl 查询存储桶 ACL 获取指定存储桶的访问权限控制列表(ACL)

基本操作

创建存储桶

功能说明

在指定账号下创建一个存储桶(PUT Bucket)。

方法原型

public Guzzle\Service\Resource\Model createBucket(array $args = array());

请求示例

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

参数说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID

检索存储桶及其权限

功能说明

确认 Bucket 是否存在且是否有权限访问(HEAD Bucket)。

方法原型

public Guzzle\Service\Resource\Model headBucket(array $args = array());

请求示例

try {
    $result = $cosClient->headBucket(array(
        'Bucket' => 'examplebucket-1250000000' //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID

删除存储桶

功能说明

删除指定账号下的空存储桶。

方法原型

public Guzzle\Service\Resource\Model deleteBucket(array $args = array());

请求示例

try {
    $result = $cosClient->deleteBucket(array(
        'Bucket' => 'examplebucket-1250000000' //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID

访问控制列表

设置存储桶 ACL

功能说明

设置指定存储桶的访问权限控制列表(ACL)。

方法原型

public Guzzle\Service\Resource\Model putBucketAcl(array $args = array());

请求示例

try {
    $result = $cosClient->putBucketAcl(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'ACL' => 'private',
        'Grants' => array(
            array(
                'Grantee' => array(
                    'DisplayName' => 'qcs::cam::uin/100000000001:uin/100000000001',
                    'ID' => 'qcs::cam::uin/100000000001:uin/100000000001',
                    'Type' => 'CanonicalUser',
                ),  
                'Permission' => 'FULL_CONTROL',
            ),  
            // ... repeated
        ),  
        'Owner' => array(
            'DisplayName' => 'qcs::cam::uin/100000000001:uin/100000000001',
            'ID' => 'qcs::cam::uin/100000000001:uin/100000000001',
        )));
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID
Grants Array ACL权限列表
Grant Array ACL权限信息 Grants
Grantee Array ACL权限信息 Grant
Type String 所有者权限类型 Grantee
Permission String 权限类型,可选值: FULL_CONTROL 、 WRITE 、 READ Grant
ACL String 整体权限类型,可选值:private 、 public-read 、public-read-write
Owner String 存储桶所有者信息
DisplayName String 权限所有者的名字信息 Grantee/Owner
ID String 权限所有者 ID Grantee/Owner

查询存储桶 ACL

功能说明

获取指定存储桶的访问权限控制列表(ACL)。

方法原型

public Guzzle\Service\Resource\Model getBucketAcl(array $args = array());

请求示例

try {
    $result = $cosClient->getBucketAcl(array(
        'Bucket' => 'examplebucket-1250000000' //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

返回结果示例

Array
(
    [data:protected] => Array
        (
          [Owner] => Array
              (
                 [ID] => qcs::cam::uin/100000000001:uin/100000000001
                 [DisplayName] => qcs::cam::uin/100000000001:uin/100000000001
              )

          [Grants] => Array
                (
                  [0] => Array
                      (
                        [Grantee] => Array
                           (
                             [ID] => qcs::cam::uin/100000000001:uin/100000000001
                             [DisplayName] => qcs::cam::uin/100000000001:uin/100000000001
                           )

                        [Permission] => FULL_CONTROL
                      )

                )

          [RequestId] => NWE3YzhjMTRfYzdhMzNiMGFfYjdiOF8yYzZmMzU=
        )
)

返回结果说明

参数名称 类型 描述 父节点
Grants Array ACL 权限列表
Grant Array ACL 权限信息 Grants
Grantee Array ACL 权限信息 Grant
Permission String 权限类型,可选值: FULL_CONTROL 、WRITE 、 READ Grant
Owner String 存储桶所有者信息
DisplayName String 权限所有者的名字信息 Grantee/Owner
ID String 权限所有者 ID Grantee/Owner

对象操作

简介

本文档提供关于对象的简单操作、分块操作等其他操作相关的 API 概览以及 SDK 示例代码。

简单操作

API 操作名 操作描述
GET Bucket(List Object) 查询对象列表 查询存储桶下的部分或者全部对象
GET Bucket Object Versions 查询对象及其历史版本列表 查询存储桶下的部分或者全部对象及其历史版本信息
PUT Object 简单上传对象 上传一个 Object(文件/对象)至 Bucket
POST Object 表单上传对象 使用表单请求上传对象
HEAD Object 查询对象元数据 查询 Object 的 Meta 信息
GET Object 下载对象 下载一个 Object(文件/对象)至本地
PUT Object - Copy 设置对象复制 复制文件到目标路径
DELETE Object 删除单个对象 在 Bucket 中删除指定 Object (文件/对象)
DELETE Multiple Object 删除多个对象 在 Bucket 中批量删除 Object (文件/对象)

分块操作

API 操作名 操作描述
List Multipart Uploads 查询分块上传 查询正在进行中的分块上传信息
Initiate Multipart Upload 初始化分块上传 初始化 Multipart Upload 上传操作
Upload Part 上传分块 分块上传对象
Upload Part - Copy 复制分块 将其他对象复制为一个分块
List Parts 查询已上传块 查询特定分块上传操作中的已上传的块
Complete Multipart Upload 完成分块上传 完成整个对象的分块上传
Abort Multipart Upload 终止分块上传 终止一个分块上传操作并删除已上传的块

其他操作

API 操作名 操作描述
PUT Object acl 设置对象 ACL 设置 Bucket 中某个 Object (文件/对象)的 ACL
GET Object acl 查询对象 ACL 查询 Object(文件/对象)的 ACL

简单操作

查询对象列表

功能说明

查询指定存储桶中所有的对象(List Object)。

方法原型

public Guzzle\Service\Resource\Model listObjects(array $args = array());

请求示例

try {
    $result = $cosClient->listObjects(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Delimiter' => '/',
        'EncodingType' => 'url',
        'Marker' => 'doc/picture.jpg',
        'Prefix' => 'doc',
        'MaxKeys' => 1000,
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Delimiter String 默认为空,设置分隔符,比如设置/来模拟文件夹
EncodingType String 默认不编码,规定返回值的编码方式,可选值:url
Marker String 默认以 UTF-8 二进制顺序列出条目,标记返回 objects 的 list 的起点位置
Prefix String 默认为空,对 object 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxKeys Int 最多返回的 objects 数量,默认为最大的1000

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Name] => examplebucket-1250000000
            [Prefix] => doc
            [Marker] => doc/picture.jpg
            [MaxKeys] => 10
            [IsTruncated] => 1
            [NextMarker] => doc/exampleobject
            [Contents] => Array
                (
                    [0] => Array
                        (
                            [Key] => doc/exampleobject
                            [LastModified] => 2019-02-14T12:20:40.000Z
                            [ETag] => "e37b429559d82e852af0b2f5b4d078ab72b90208"
                            [Size] => 6532594
                            [Owner] => Array
                                (
                                    [ID] => 100000000001
                                    [DisplayName] => 100000000001
                                )

                            [StorageClass] => STANDARD
                        )

                    [1] => Array
                        (
                            [Key] => doc/exampleobject2
                            [LastModified] => 2019-03-04T06:34:43.000Z
                            [ETag] => "988f9f28e68eba9b8c1f5f98ccce0a3c"
                            [Size] => 28
                            [Owner] => Array
                                (
                                    [ID] => 100000000001
                                    [DisplayName] => 100000000001
                                )

                            [StorageClass] => STANDARD
                        )
                )
            [RequestId] => NWNhMzM0MmZfOWUxYzBiMDlfOTk2YV83ZWE3ODE=
        )

)

返回结果说明

参数名称 类型 描述 父节点
Name String 存储桶名称,格式:BucketName-APPID
Delimiter String 设置分隔符,比如设置/来模拟文件夹
EncodingType String 规定返回值的编码方式
Marker String 默认以 UTF-8 二进制顺序列出条目,标记返回 objects 的 list 的起点位置
Prefix String 对 object 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxKeys Int 最多返回的 objects 数量,默认为最大的1000
IsTruncated Int 表示返回的 objects 否被截断
Contents Array 返回的对象列表
Content Array 返回的对象属性,包含所有 objects 元信息的 list,包括 'ETag','StorageClass','Key','Owner','LastModified','Size' 等信息 Contents

查询对象及其历史版本列表

功能说明

查询存储桶下的部分或者全部对象及其历史版本信息。

方法原型

public Guzzle\Service\Resource\Model listObjectVersions(array $args = array());

请求示例

try {
    $result = $cosClient->listObjectVersions(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Delimiter' => '/',
        'EncodingType' => 'url',
        'KeyMarker' => 'string',
        'VersionIdMarker' => 'string',
        'Prefix' => 'doc',
        'MaxKeys' => 1000,
    )); 
    print_r($result);
} catch (\Exception $e) {
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,由 BucketName-APPID 构成
Prefix String 默认为空,对对象的对象键进行筛选,匹配 prefix 为前缀的对象
Delimiter String 默认为空,设置分隔符,比如设置/来模拟文件夹
KeyMarker String 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 Key 的起点位置
VersionIdMarker String 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 VersionId 的起点位置
MaxKeys Int 最多返回的对象数量,默认为最大的1000
EncodingType String 默认不编码,规定返回值的编码方式,可选值:url

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Name] => examplebucket-1250000000
            [Prefix] => doc
            [KeyMarker] => string
            [VersionIdMarker] => string
            [MaxKeys] => 10
            [IsTruncated] => 1
            [NextKeyMarker] => string
            [NextVersionIdMarker] => string
            [Versions] => Array
                (
                    [0] => Array
                        (
                            [Key] => doc/exampleobject1
                            [VersionId] => null
                            [IsLatest] => 1
                            [LastModified] => 2019-06-13T09:24:52.000Z
                            [ETag] => "96e79218965eb72c92a549dd5a330112"
                            [Size] => 6
                            [StorageClass] => STANDARD
                            [Owner] => Array
                                (
                                    [UID] => 1251668577
                                )
                        )

                    [1] => Array
                        (
                            [Key] => doc/exampleobject2
                            [VersionId] => MTg0NDUxODMyMTE2ODY0OTExOTk
                            [IsLatest] => 1
                            [LastModified] => 2019-06-18T12:47:03.000Z
                            [ETag] => "698d51a19d8a121ce581499d7b701668"
                            [Size] => 3
                            [StorageClass] => STANDARD
                            [Owner] => Array
                                (
                                    [UID] => 1251668577
                                )
                        )
                    )
            [RequestId] => NWQwOGVkZGRfMjViMjU4NjRfODNjN18xMTE5YWI4
        )

)

返回结果说明

参数名称 类型 描述 父节点
Name String 存储桶名称,格式:BucketName-APPID
Delimiter String 设置分隔符,比如设置/来模拟文件夹
EncodingType String 规定返回值的编码方式
KeyMarker String 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 Key 的起点位置
VersionIdMarker String 默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 VersionId 的起点位置
NextKeyMarker String 当 IsTruncated 为 true 时,标记下一次返回对象的 list 的 Key 的起点位置
NextVersionIdMarker String 当 IsTruncated 为 true 时,标记下一次返回对象的 list 的 VersionId 的起点位置
Prefix String 对 object 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxKeys Int 最多返回的 objects 数量,默认为最大的1000
IsTruncated Int 表示返回的 objects 否被截断
Versions Array 包含所有多个版本对象元数据的 list
Version Array 包含所有多个版本对象元数据的 list,包括 'ETag','StorageClass','Key','VersionId','IsLatest','Owner','LastModified','Size' 等信息 Versions
CommonPrefixes Array 所有以 Prefix 开头,以 Delimiter 结尾的对象被归到同一类

简单上传对象

功能说明

上传对象到指定的存储桶中(PUT Object),最大支持5G大小的文件,如果需要上传超过5G的文件,建议使用高级接口中的复合上传接口。

方法原型

public Guzzle\Service\Resource\Model putObject(array $args = array())

请求示例

try { 
    $result = $cosClient->putObject(array( 
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID 
        'Key' => 'exampleobject', 
        'Body' => fopen('/data/exampleobject', 'rb'), 
        /*
        'ACL' => 'string',
        'CacheControl' => 'string',
        'ContentDisposition' => 'string',
        'ContentEncoding' => 'string',
        'ContentLanguage' => 'string',
        'ContentLength' => integer,
        'ContentType' => 'string',
        'Expires' => 'string',
        'GrantFullControl' => 'string',
        'GrantRead' => 'string',
        'GrantWrite' => 'string',
        'Metadata' => array(
        'string' => 'string',
        ),
        'ContentMD5' => 'string',
        'ServerSideEncryption' => 'string',
        'StorageClass' => 'string'
        */
    )); 
    // 请求成功 
    print_r($result); 
} catch (\Exception $e) { 
    // 请求失败 
    echo($e); 
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
ACL String 设置对象的 ACL,如 private、public-read
Body File/String 上传的内容
CacheControl String 缓存策略,设置 Cache-Control
ContentDisposition String 文件名称,设置 Content-Disposition
ContentEncoding String 编码格式,设置 Content-Encoding
ContentLanguage String 语言类型,设置 Content-Language
ContentLength Int 设置传输长度
ContentType String 内容类型,设置 Content-Type
Expires String 设置 Content-Expires
Metadata Array 用户自定义的文件元信息
StorageClass String 文件的存储类型,默认值:STANDARD
ContentMD5 String 设置上传文件的 MD5 值用于校验
ServerSideEncryption String 服务端加密方法

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [ETag] => "698d51a19d8a121ce581499d7b701668"
            [VersionId] => MTg0NDUxODMyMTE2ODY0OTExOTk
            [RequestId] => NWQwOGRkNDdfMjJiMjU4NjRfNzVjXzEwNmVjY2M=
            [ObjectURL] => http://lewzylucd2-1251668577.cos.ap-chengdu.myqcloud.com/123
        )

)

返回结果说明

参数名称 类型 描述 父节点
ETag String 上传文件的 MD5 值
VersionId String 开启多版本后,文件的版本号

查询对象元数据

功能说明

查询 Object 的 Meta 信息(HEAD Object)。

方法原型

public Guzzle\Service\Resource\Model headObject(array $args = array());

请求示例

$cosClient = new Qcloud\Cos\Client(
    array(
        'schema' => 'http',       // 协议头部,默认为http
        'region' => $region,      // Region
        'endpoint' => $endpoint,  // Endpoint
        'credentials'=> array(
            'secretId'  => $secretId ,
            'secretKey' => $secretKey)));
try {
    $result = $cosClient->headObject(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
VersionId String 开启多版本后,指定文件的具体版本

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [DeleteMarker] => 
            [AcceptRanges] => 
            [Expiration] => 
            [Restore] => 
            [LastModified] => Tue, 02 Apr 2019 12:38:09 GMT
            [ContentLength] => 238186
            [ETag] => "af9f3b8eaf64473278909183abba1e31"
            [MissingMeta] => 
            [VersionId] => 
            [CacheControl] => 
            [ContentDisposition] => 
            [ContentEncoding] => 
            [ContentLanguage] => 
            [ContentType] => text/plain; charset=utf-8
            [Expires] => 
            [ServerSideEncryption] => 
            [Metadata] => Array
                (
                    [md5] => af9f3b8eaf64473278909183abba1e31
                )
            [SSECustomerAlgorithm] => 
            [SSECustomerKeyMD5] => 
            [SSEKMSKeyId] => 
            [StorageClass] => 
            [RequestCharged] => 
            [ReplicationStatus] => 
            [RequestId] => NWNhMzU3Y2ZfMzFhYzM1MGFfODdhMF8xOTExM2U=
        )

)

返回结果说明

参数名称 类型 描述 父节点
CacheControl String 缓存策略,设置 Cache-Control
ContentDisposition String 文件名称,设置 Content-Disposition
ContentEncoding String 编码格式,设置 Content-Encoding
ContentLanguage String 语言类型,设置 Content-Language
ContentLength Int 设置传输长度
ContentType String 内容类型,设置 Content-Type
Metadata Array 用户自定义的文件元信息
StorageClass String 文件的存储类型,默认值:STANDARD
ServerSideEncryption String 服务端加密方法
ETag String 文件的MD5值
Restore String 归档文件的回热信息

下载对象

功能说明

下载对象到本地(GET Object)。

方法原型

public Guzzle\Service\Resource\Model getObject(array $args = array());

请求示例

try {
    $result = $cosClient->getObject(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
        'SaveAs' => '/data/exampleobject',
        /*
        'Range' => 'bytes=0-10',
        'VersionId' => 'string',
        'ResponseCacheControl' => 'string',
        'ResponseContentDisposition' => 'string',
        'ResponseContentEncoding' => 'string',
        'ResponseContentLanguage' => 'string',
        'ResponseContentType' => 'string',
        'ResponseExpires' => 'string',
        */
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
SaveAs String 保存到本地的本地文件路径
VersionId String 开启多版本后,指定文件的具体版本
Range String 设置下载文件的范围,格式为 bytes=first-last
ResponseCacheControl String 设置响应头部 Cache-Control
ResponseContentDisposition String 设置响应头部 Content-Disposition
ResponseContentEncoding String 设置响应头部 Content-Encoding
ResponseContentLanguage String 设置响应头部 Content-Language
ResponseContentType String 设置响应头部 Content-Type
ResponseExpires String 设置响应头部 Content-Expires

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Body] => 
            [DeleteMarker] => 
            [AcceptRanges] => bytes
            [Expiration] => 
            [Restore] => 
            [LastModified] => Tue, 02 Apr 2019 20:38:09 GMT
            [ContentLength] => 238186
            [ETag] => "af9f3b8eaf64473278909183abba1e31"
            [MissingMeta] => 
            [VersionId] => 
            [CacheControl] => 
            [ContentDisposition] => 
            [ContentEncoding] => 
            [ContentLanguage] => 
            [ContentRange] => 
            [ContentType] => text/plain; charset=utf-8
            [Expires] => 
            [WebsiteRedirectLocation] => 
            [ServerSideEncryption] => 
            [Metadata] => Array
                (
                    [md5] => af9f3b8eaf64473278909183abba1e31
                )

            [SSECustomerAlgorithm] => 
            [SSECustomerKeyMD5] => 
            [SSEKMSKeyId] => 
            [StorageClass] => 
            [RequestCharged] => 
            [ReplicationStatus] => 
            [RequestId] => NWNhNDBmYzBfNmNhYjM1MGFfMmUzYzFfMWIzMDYz
        )

)

返回结果说明

参数名称 类型 描述 父节点
Body File/String 下载内容
ETag String 文件的 MD5 值
Expires String Content-Expires
Metadata Array 用户自定义的文件元信息
StorageClass String 文件的存储类型,默认值:STANDARD
ContentMD5 String 设置上传文件的 MD5 值用于校验
ServerSideEncryption String 服务端加密方法
CacheControl String 缓存策略,设置 Cache-Control
ContentDisposition String 文件名称,设置 Content-Disposition
ContentEncoding String 编码格式,设置 Content-Encoding
ContentLanguage String 语言类型,设置 Content-Language
ContentLength Int 设置传输长度
ContentType String 内容类型,设置 Content-Type
Metadata Array 用户自定义的文件元信息
Restore String 归档文件的回热信息

设置对象复制

将一个对象复制到目标路径(PUT Object - Copy)。

方法原型

public Guzzle\Service\Resource\Model copyObject(array $args = array());

请求示例

try {
    $result = $cosClient->copyObject(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
        'CopySource' => 'examplebucket2-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject',
        /*
        'MetadataDirective' => 'string',
        'ACL' => 'string',
        'CacheControl' => 'string',
        'ContentDisposition' => 'string',
        'ContentEncoding' => 'string',
        'ContentLanguage' => 'string',
        'ContentLength' => integer,
        'ContentType' => 'string',
        'Expires' => 'string',
        'GrantFullControl' => 'string',
        'GrantRead' => 'string',
        'GrantWrite' => 'string',
        'Metadata' => array(
        'string' => 'string',
        ),
        'ContentMD5' => 'string',
        'ServerSideEncryption' => 'string',
        'StorageClass' => 'string'
        */
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
CopySource String 描述拷贝源文件的路径,包含 Appid、Bucket、Key、Region,例如 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg
MetadataDirective String 可选值为 Copy、Replaced。设置为 Copy 时,忽略设置的用户元数据信息直接复制,设置为 Replaced 时,按设置的元信息修改元数据,当目标路径和源路径一样时,必须设置为 Replaced

删除单个对象

功能说明

在存储桶中删除指定 Object (文件/对象)。

方法原型

public Guzzle\Service\Resource\Model deleteObject(array $args = array());

请求示例

try {
    $result = $cosClient->deleteObject(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
        'VersionId' => 'string'
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
VersionId String 删除文件的版本号

删除多个对象

功能说明

在存储桶中批量删除 Object (文件/对象)。

方法原型

public Guzzle\Service\Resource\Model deleteObjects(array $args = array());

请求示例

try {
    $result = $cosClient->deleteObjects(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Objects' => array(
            array(
                'Key' => 'exampleobject',
                'VersionId' => 'string'
            ),  
            // ... repeated
        ),  
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Objects Array 删除对象列表
Object Array 删除的对象
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
VersionId String 删除文件的版本号

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Deleted] => Array
                (
                    [0] => Array
                        (
                            [Key] => exampleobject1
                        )
                )
            [Errors] => Array
                (
                    [0] => Array
                        (
                            [Key] => exampleobject2
                            [Code] => 
                            [Message] => 
                        )
                )
            [RequestId] => NWNhZWYzYWNfMTlhYTk0MGFfNGRjX2MzZTVhOQ==
        )
)

返回结果说明

参数名称 类型 描述 父节点
Deleted Array 成功删除的对象的列表
Errors Array 失败删除的对象的列表
Key String 对象键 Deleted/Errors
Code String 失败错误码 Errors
Message String 失败错误信息 Errors

分块操作

查询分片上传

功能说明

查询指定存储桶中正在进行的分片上传(List Multipart Uploads)。

方法原型

public Guzzle\Service\Resource\Model listMultipartUploads(array $args = array());

请求示例

try {
    $result = $cosClient->listMultipartUploads(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Delimiter' => '/',
        'EncodingType' => 'url',
        'KeyMarker' => 'string',
        'UploadIdMarker' => 'string',
        'Prefix' => 'prfix',
        'MaxUploads' => 1000,
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Delimiter String 默认为空,设置分隔符,比如设置/来模拟文件夹
EncodingType String 默认不编码,规定返回值的编码方式,可选值:url
KeyMarker String 标记返回 parts 的 list 的起点位置
UploadIdMarker String 标记返回 parts 的 list 的起点位置
Prefix String 默认为空,对 parts 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxUploads Int 最多返回的 parts 数量,默认为最大的1000

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Bucket] => examplebucket-1250000000
            [EncodingType] => 
            [KeyMarker] => 
            [UploadIdMarker] => 
            [MaxUploads] => 1000
            [Prefix] => 
            [IsTruncated] => 
            [Uploads] => Array
                (
                    [0] => Array
                        (
                            [Key] => exampleobject
                            [UploadId] => 1551693693b1e6d0e00eec30c534059865ec89c9393028b60bfaf167e9420524b25eeb2940
                            [Initiator] => Array
                                (
                                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                                    [DisplayName] => 100000000001
                                )

                            [Owner] => Array
                                (
                                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                                    [DisplayName] => 100000000001
                                )

                            [StorageClass] => STANDARD
                            [Initiated] => 2019-03-04T10:01:33.000Z
                        )

                    [1] => Array
                        (
                            [Key] => exampleobject
                            [UploadId] => 155374001100563fe0e9d37964d53077e54e9d392bce78f630359cd3288e62acee2b719534
                            [Initiator] => Array
                                (
                                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                                    [DisplayName] => 100000000001
                                )

                            [Owner] => Array
                                (
                                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                                    [DisplayName] => 100000000001
                                )

                            [StorageClass] => STANDARD
                            [Initiated] => 2019-03-28T02:26:51.000Z
                        )

                )

            [RequestId] => NWNhNDJmNzBfZWFhZDM1MGFfMjYyM2FfMWIyNzhh
        )

)

返回结果说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID
IsTruncated Int 表示返回的 objects 否被截断
Uploads Array 返回的分块列表
Upload Array 返回的分块属性 Uploads
Key String 对象健名 Upload
UploadId String 对象的分块上传 ID Upload
Initiator String 初始化该分片的操作者 Upload
Owner String 分块拥有者 Upload
StorageClass String 分块存储类型 Upload
Initiated String 分块初始化时间 Upload

分片上传对象

分片上传对象可包括的操作:

  • 分片上传对象: 初始化分片上传, 上传分片块, 完成分块上传。

  • 分片续传:查询已上传块, 上传分片块,完成分块上传。

  • 删除已上传分片块。

初始化分片上传

功能说明

初始化 Multipart Upload 上传操作(Initiate Multipart Upload)。

方法原型

public Guzzle\Service\Resource\Model createMultipartUpload(array $args = array());

请求示例

try {
    $result = $cosClient->createMultipartUpload(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
        /*  
        'CacheControl' => 'string',
        'ContentDisposition' => 'string',
        'ContentEncoding' => 'string',
        'ContentLanguage' => 'string',
        'ContentLength' => integer,
        'ContentType' => 'string',
        'Expires' => 'string',
        'Metadata' => array(
            'string' => 'string',
        ),
        'StorageClass' => 'string'
        */
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
CacheControl String 缓存策略,设置 Cache-Control
ContentDisposition String 文件名称,设置 Content-Disposition
ContentEncoding String 编码格式,设置 Content-Encoding
ContentLanguage String 语言类型,设置 Content-Language
ContentLength Int 设置传输长度
ContentType String 内容类型,设置 Content-Type
Expires String 设置 Content-Expires
Metadata Array 用户自定义的文件元信息
StorageClass String 文件的存储类型,默认值:STANDARD
ContentMD5 String 设置上传文件的 MD5 值用于校验
ServerSideEncryption String 服务端加密方法

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Bucket] => examplebucket-1250000000
            [Key] => exampleobject
            [UploadId] => 1554277569b3e83df05c730104c325eb7b56000449fb7d51300b0728aacde02a6ea7f6c033
            [RequestId] => NWNhNDY0YzFfMmZiNTM1MGFfNTM2YV8xYjliMTg=
        )

)

返回结果说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
UploadId String 对象分块上传的ID

查询已上传块

功能说明

查询特定分块上传操作中的已上传的块(List Parts)。

方法原型

public Guzzle\Service\Resource\Model listParts(array $args = array());

请求示例

try {
    $result = $cosClient->listParts(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
        'UploadId' => 'NWNhNDY0YzFfMmZiNTM1MGFfNTM2YV8xYjliMTg',
        'PartNumberMarker' => 1,
        'MaxParts' => 1000,
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
UploadId String 对象分块上传的 ID
PartNumberMarker Int 标记返回 parts 的 list 的起点位置
MaxParts Int 最多返回的 parts 数量,默认最大值为1000

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [Bucket] => examplebucket-1250000000
            [Key] => exampleobject
            [UploadId] => 1554279643cf19d71bb5fb0d29613e5541131f3a96387d9e168cd939c23a3d608c9eb94707
            [Owner] => Array
                (
                    [ID] => 1250000000
                    [DisplayName] => 1250000000
                )
            [PartNumberMarker] => 1
            [Initiator] => Array
                (
                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                    [DisplayName] => 100000000001
                )
            [StorageClass] => Standard
            [MaxParts] => 1000
            [IsTruncated] => 
            [Parts] => Array
                (
                    [0] => Array
                        (
                            [PartNumber] => 2
                            [LastModified] => 2019-04-03T08:21:28.000Z
                            [ETag] => "b948e77469189ac94b98e09755a6dba9"
                            [Size] => 1048576
                        )
                    [1] => Array
                        (
                            [PartNumber] => 3
                            [LastModified] => 2019-04-03T08:21:22.000Z
                            [ETag] => "9e5060e2994ec8463bfbebd442fdff16"
                            [Size] => 1048576
                        )                       
                )
            [RequestId] => NWNhNDZkNTJfOGNiMjM1MGFfMTRlYl8xYmJiOTU=
        )

)

返回结果说明

参数名称 类型 描述 父节点
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
UploadId String 对象分块上传的 ID
IsTruncated Int 表示返回的 objects 否被截断
PartNumberMarker Int 标记返回 parts 的 list 的起点位置
MaxParts Int 最多返回的 parts 数量,默认最大值为1000
Initiator String 初始化该分片的操作者
Parts Array 返回的分块列表
Part Array 返回的分块属性 Parts
PartNumber Int 分块标号 Part
LastModified String 分块的最后上传时间 Part
ETag String 分块的 MD5 值 Part
Size String 分块的大小 Part

上传分块

分块上传文件(Upload Part)。

方法原型

public Guzzle\Service\Resource\Model uploadPart(array $args = array());

请求示例

try {
    $result = $cosClient->uploadPart(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject', 
        'Body' => 'string',
        'UploadId' => 'NWNhNDY0YzFfMmZiNTM1MGFfNTM2YV8xYjliMTg',
        'PartNumber' => integer,
        /*
        'ContentMD5' => 'string',
        'ContentLength' => integer,
        */
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
UploadId String 对象分块上传的 ID
Body File/String 上传的内容
PartNumber Int 上传分块的编号
ContentLength Int 设置传输长度
ContentMD5 String 设置上传文件的 MD5 值用于校验

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [structure:protected] => 
    [data:protected] => Array
        (
            [ETag] => "96e79218965eb72c92a549dd5a330112"
            [RequestId] => NWNhNDdjYWFfNjNhYjM1MGFfMjk2NF8xY2ViMWM=
        )

)

返回结果说明

参数名称 类型 描述 父节点
ETag String 分块的 MD5 值

完成分块上传

功能说明

完成整个文件的分块上传(Complete Multipart Upload)。

方法原型

public Guzzle\Service\Resource\Model completeMultipartUpload(array $args = array());

请求示例

try {
    $result = $cosClient->completeMultipartUpload(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject', 
        'UploadId' => 'string',
        'Parts' => array(
            array(
                'ETag' => 'string',
                'PartNumber' => integer,
            ),  
            array(
                'ETag' => 'string',
                'PartNumber' => integer,
            )), 
            // ... repeated
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
UploadId String 对象分块上传的 ID
Parts Array 分块信息列表
Part Array 上传分块的内容信息
ETag String 分块内容的 MD5
PartNumber Int 分块编号

终止分块上传

功能说明

终止一个分块上传操作并删除已上传的块(Abort Multipart Upload)。

方法原型

public Guzzle\Service\Resource\Model abortMultipartUpload(array $args = array());

请求示例

try {
    $result = $cosClient->abortMultipartUpload(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject', 
        'UploadId' => 'string',
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
UploadId String 对象分块上传的 ID

其他操作

设置对象 ACL

功能说明

设置指定对象访问权限控制列表(ACL)(PUT Object acl)。

方法原型

public Guzzle\Service\Resource\Model putObjectAcl(array $args = array());

请求示例

try {
    $result = $cosClient->putObjectAcl(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'Key' => 'exampleobject',
        'ACL' => 'private',
        'Grants' => array(
            array(
                'Grantee' => array(
                    'DisplayName' => 'qcs::cam::uin/100000000001:uin/100000000001',
                    'ID' => 'qcs::cam::uin/100000000001:uin/100000000001',
                    'Type' => 'CanonicalUser',
                ),  
                'Permission' => 'FULL_CONTROL',
            ),  
            // ... repeated
        ),  
        'Owner' => array(
            'DisplayName' => 'qcs::cam::uin/100000000001:uin/100000000001',
            'ID' => 'qcs::cam::uin/100000000001:uin/100000000001',
        )));
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Key String 对象键
Grants Array ACL权限列表
Grant Array ACL权限信息
Grantee Array ACL权限信息
Type String 所有者权限类型
Permission String 权限类型,可选值: FULL_CONTROL 、WRITE 、READ
ACL String 整体权限类型,可选值: private 、 public-read
Owner String 存储桶所有者信息
DisplayName String 权限所有者的名字信息
ID String 权限所有者 ID

获取对象 ACL

功能说明

获取指定对象的访问权限控制列表(ACL)(GET Object acl)。

方法原型

public Guzzle\Service\Resource\Model getObjectAcl(array $args = array());

请求示例

try {
    $result = $cosClient->getObjectAcl(array(
        'Bucket' => 'examplebucket-1250000000' //格式:BucketName-APPID
        'Key' => 'exampleobject',
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

返回结果示例

Array
(
    [data:protected] => Array
        (
            [Owner] => Array
                (
                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                    [DisplayName] => qcs::cam::uin/100000000001:uin/100000000001
                )

            [Grants] => Array
                (
                    [0] => Array
                        (
                            [Grantee] => Array
                                (
                                    [ID] => qcs::cam::uin/100000000001:uin/100000000001
                                    [DisplayName] => qcs::cam::uin/100000000001:uin/100000000001
                                )

                            [Permission] => FULL_CONTROL
                        )

                )

            [RequestId] => NWE3YzhjMTRfYzdhMzNiMGFfYjdiOF8yYzZmMzU=
        )
)

返回结果说明

参数名称 类型 描述 父节点
Grants Array ACL权限列表
Grant Array ACL权限信息 Grants
Grantee Array ACL权限信息 Grant
Permission String 权限类型,可选值: FULL_CONTROL 、WRITE 、 READ Grant
Owner String 存储桶所有者信息
DisplayName String 权限所有者的名字信息 Grantee / Owner
ID String 权限所有者 ID Grantee / Owner

高级接口(推荐)

该小节主要讲述由 COS 提供的封装了上传和复制操作的高级接口,用户只需要设置相应的参数,该接口内部会根据文件大小决定是进行简单上传(复制)还是分片上传(复制),使用接口前请确认已完成了 快速入门 中指引的初始化步骤。

复合上传

功能说明

该接口内部会根据文件大小,对小文件调用简单上传接口,对大文件调用分块上传接口。

请求示例

try {
    $result = $cosClient->Upload(
        $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
        $key = 'exampleobject',
        $body = fopen('/data/exampleobject', 'rb')
        /*
        $options = array(
            'ACL' => 'string',
            'CacheControl' => 'string',
            'ContentDisposition' => 'string',
            'ContentEncoding' => 'string',
            'ContentLanguage' => 'string',
            'ContentLength' => integer,
            'ContentType' => 'string',
            'Expires' => 'string',
            'GrantFullControl' => 'string',
            'GrantRead' => 'string',
            'GrantWrite' => 'string',
            'Metadata' => array(
                'string' => 'string',
            ),
            'ContentMD5' => 'string',
            'ServerSideEncryption' => 'string',
            'StorageClass' => 'string'
        )
        */
    );
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

复合复制

功能说明

该接口内部会根据文件大小,对小文件调用设置对象复制接口,对大文件调用分块复制接口。

请求示例

try {
    $result = $cosClient->Copy(
        $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
        $key = 'exampleobject',
        $copysource = 'examplebucket2-1250000000.cos.ap-guangzhou.myqcloud.com/exampleobject'
        /*
        $options = array(
            'ACL' => 'string',
            'MetadataDirective' => 'string',
            'CacheControl' => 'string',
            'ContentDisposition' => 'string',
            'ContentEncoding' => 'string',
            'ContentLanguage' => 'string',
            'ContentLength' => integer,
            'ContentType' => 'string',
            'Expires' => 'string',
            'GrantFullControl' => 'string',
            'GrantRead' => 'string',
            'GrantWrite' => 'string',
            'Metadata' => array(
                'string' => 'string',
            ),
            'ContentMD5' => 'string',
            'ServerSideEncryption' => 'string',
            'StorageClass' => 'string'
        )
        */
    );
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

存储桶管理

简介

本文档提供关于跨域访问、生命周期、版本控制、跨地域复制相关的 API 概览以及 SDK 示例代码。

跨域访问

API 操作名 操作描述
PUT Bucket cors 设置跨域配置 设置存储桶的跨域名访问权限
GET Bucket cors 查询跨域配置 查询存储桶的跨域名访问配置信息
DELETE Bucket cors 删除跨域配置 删除存储桶的跨域名访问配置信息

版本控制

API 操作名 操作描述
PUT Bucket versioning 设置版本控制 设置存储桶的版本控制功能
GET Bucket versioning 查询版本控制 查询存储桶的版本控制信息

跨地域复制

API 操作名 操作描述
PUT Bucket replication 设置跨地域复制 设置存储桶的跨地域复制规则
GET Bucket replication 查询跨地域复制 查询存储桶的跨地域复制规则
DELETE Bucket replication 删除跨地域复制 删除存储桶的跨地域复制规则

跨域访问

设置跨域配置

功能说明

设置指定存储桶的跨域名访问配置信息(PUT Bucket cors)。

方法原型

public Guzzle\Service\Resource\Model putBucketCors(array $args = array());

请求示例

try {
    $result = $cosClient->putBucketCors(array(
        'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
        'CORSRules' => array(
            array(
                'AllowedHeaders' => array('*',),
                'AllowedMethods' => array('Put', ),
                'AllowedOrigins' => array('*', ),
                'ExposeHeaders' => array('*', ),
                'MaxAgeSeconds' => 1,
            ),  
            // ... repeated
        )   
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
CORSRules Array 跨域信息列表
CORSRule Array 跨域信息
AllowedMethods String 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE
AllowedOrigins String 允许的访问来源,支持通配符 *, 格式为:协议://域名[:端口]如:http://www.qq.com
AllowedHeaders String 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符*
ExposeHeaders String 设置浏览器可以接收到的来自服务器端的自定义头部信息
MaxAgeSeconds Int 设置 OPTIONS 请求得到结果的有效期
ID String 配置规则的 ID

查询跨域配置

功能说明

查询指定存储桶的跨域名访问配置信息(GET Bucket cors)。

方法原型

public Guzzle\Service\Resource\Model getBucketCors(array $args = array());

请求示例

try {
    $result = $cosClient->getBucketCors(array(
        'Bucket' => 'examplebucket-1250000000' //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [data:protected] => Array
        (
            [CORSRules] => Array
                (
                    [0] => Array
                        (
                            [ID] => 1234
                            [AllowedHeaders] => Array
                                (
                                    [0] => *
                                )
                            [AllowedMethods] => Array
                                (
                                    [0] => PUT
                                )
                            [AllowedOrigins] => Array
                                (
                                    [0] => http://www.qq.com
                                )
                        )
                )
            [RequestId] => NWE3YzhkMmRfMTdiMjk0MGFfNTQzZl8xNWUwMGU=
        )
)

返回结果说明

参数名称 类型 描述 父节点
CORSRules Array 跨域信息列表
CORSRule Array 跨域信息 CORSRules
AllowedMethods String 允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE CORSRule
AllowedOrigins String 允许的访问来源,支持通配符*, 格式为:协议://域名[:端口]。例如:http://www.qq.com CORSRule
AllowedHeaders String 在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符* CORSRule
ExposeHeaders String 设置浏览器可以接收到的来自服务器端的自定义头部信息 CORSRule
MaxAgeSeconds Int 设置 OPTIONS 请求得到结果的有效期 CORSRule
ID String 配置规则的 ID CORSRule

删除跨域配置

功能说明

删除指定存储桶的跨域名访问配置(DELETE Bucket cors)。

方法原型

public Guzzle\Service\Resource\Model deleteBucketCors(array $args = array());

请求示例

try {
    $result = $cosClient->deleteBucketCors(array(
        'Bucket' => 'examplebucket-1250000000' //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID

版本控制

设置版本控制

功能说明

设置指定存储桶的版本控制功能(PUT Bucket versioning)。

方法原型

public Guzzle\Service\Resource\Model putBucketVersioning(array $args = array());

请求示例

开启版本控制

try {
    $result = $cosClient->putBucketVersioning(array(
        'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID
        'Status' => 'Enabled'
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

暂停版本控制

try {
    $result = $cosClient->putBucketVersioning(array(
        'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID
        'Status' => 'Suspended'
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID
Status String 版本控制策略,可选值为Suspended/Enabled

查询版本控制

功能说明

查询指定存储桶的版本控制信息(GET Bucket versioning)。

方法原型

public Guzzle\Service\Resource\Model getBucketVersioning(array $args = array());

请求示例

try {
    $result = $cosClient->getBucketVersioning(array(
        'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID

返回结果说明

参数名称 类型 描述 父节点
Status String 版本控制策略,可选值为Suspended/Enabled或空

跨地域复制

设置跨地域复制

功能说明

设置指定存储桶的跨地域复制规则(PUT Bucket replication)。

方法原型

public Guzzle\Service\Resource\Model putBucketReplication(array $args = array());

请求示例

try {
    $result = $cosClient->putBucketReplication(array(
        'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID
        'Role' => 'qcs::cam::uin/100000000001:uin/100000000001',
        'Rules'=>array(
            array(
                'Status' => 'Enabled',
                'ID' => 'string',
                'Prefix' => 'string',
                'Destination' => array(                    'Bucket' => 'qcs::cos:ap-guangzhou::examplebucket2-125000000',
                    'StorageClass' => 'standard',                ),  
                // ...repeated            ),  
        ),      )); 
    // 请求成功    print_r($result);
} catch (\Exception $e) {    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 源存储桶名称,格式:BucketName-APPID
Role String 发起者身份标示, 格式为 qcs::cam::uin/:uin/
Rules Array 设置对应的规则,包括 ID,Status,Prefix,Destination
ID String 设置规则的 ID
Status String 设置 Rule 是否启用,可选值为 Enabled 或者 Disabled
Prefix String 设置 Rule 的前缀匹配规则,为空时表示作用存储桶中的所有 objects
Destination String 描述目的资源, 包括 Bucket 和 StorageClass
Bucket String 设置跨地域复制的目标存储桶,格式为 qcs::cos:[region]::[BucketName-APPID]
StorageClass String 设置目的文件的存储类型,默认值:'STANDARD'

查询跨地域复制

功能说明

查询指定存储桶的跨地域复制规则(GET Bucket replication)。

方法原型

public Guzzle\Service\Resource\Model getBucketReplication(array $args = array());

请求示例

try {
    $result = $cosClient->getBucketReplication(array(
        'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID

返回结果示例

Guzzle\Service\Resource\Model Object
(
    [data:protected] => Array
        (
            [Role] => qcs::cam::uin/100000000001:uin/100000000001
            [Rules] => Array
                (
                    [0] => Array
                        (
                            [ID] => string
                            [Status] => Enabled
                            [Prefix] => string
                            [Destination] => Array
                                (
                                    [Bucket] => qcs::cos:ap-guangzhou::examplebucket2-125000000
                                    [StorageClass] => 
                                )
                        )
                )
            [RequestId] => NWQwOGI5MGVfNWFiMjU4NjRfNDUzY19mNzRhMTU=
        )
)

返回结果说明

参数名称 类型 描述 父节点
Role String 发起者身份标示, 格式为 qcs::cam::uin/:uin/
Rules Array 设置对应的规则,包括 ID,Status,Prefix,Destination
Rule Array 设置对应的规则,包括 ID,Status,Prefix,Destination Rules
ID String 设置规则的 ID Rule
Status String 设置 Rule 是否启用,可选值为 Enabled 或者 Disabled Rule
Prefix String 设置 Rule 的前缀匹配规则,为空时表示作用存储桶中的所有 objects Rule
Destination String 描述目的资源, 包括 Bucket 和 StorageClass Rule
Bucket String 设置跨地域复制的目标存储桶,格式为 qcs::cos:[region]::[BucketName-APPID] Destination
StorageClass String 设置目的文件的存储类型,默认值:'STANDARD' Destination

删除跨地域复制

功能说明

删除指定存储桶的跨地域复制规则(DELETE Bucket replication)。

方法原型

public Guzzle\Service\Resource\Model deleteBucketReplication(array $args = array());

请求示例

try {
    $result = $cosClient->deleteBucketReplication(array(
        'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID
    )); 
    // 请求成功
    print_r($result);
} catch (\Exception $e) {
    // 请求失败
    echo "$e\n";
}

参数说明

参数名称 类型 描述 必填
Bucket String 存储桶名称,格式:BucketName-APPID

预签名 URL

简介

PHP SDK 提供获取请求预签名 URL 接口。

永久密钥预签名请求示例

上传请求示例

$secretId = "COS_SECRETID";                  // 替换为用户的 SecretId
$secretKey = "COS_SECRETKEY";                // 替换为用户的 SecretKey

$region = "REGION";                          // 替换为用户的 Region
$domain = "DOMAIN.COM";                      // 替换为用户的 Domain

$formatRegion = sprintf("cos.%s", $region);  // 格式化为标准的 Region (前方加 cos.)
$endpoint = sprintf("%s.%s", $formatRegion, $domain);
                                             // 通过 FormatRegion 和 Domain 生成 Endpoint

$cosClient = new Qcloud\Cos\Client(
    array(
        'schema' => 'http',       // 协议头部,默认为http
        'region' => $region,      // Region
        'endpoint' => $endpoint,  // Endpoint
        'credentials'=> array(
            'secretId'  => $secretId ,
            'secretKey' => $secretKey)));

### 简单上传预签名
try {
    $command = $cosClient->getCommand('putObject', array(
        'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
        'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
        'Body' => '', //
    ));
    $signedUrl = $command->createPresignedUrl('+10 minutes');
    // 请求成功
    echo ($signedUrl);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

### 分块上传预签名
try {
    $command = $cosClient->getCommand('uploadPart', array(
        'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
        'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
        'UploadId' => '',
        'PartNumber' => '1',
        'Body' => '', 
    ));
    $signedUrl = $command->createPresignedUrl('+10 minutes');
    // 请求成功
    echo ($signedUrl);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

下载请求示例

$secretId = "COS_SECRETID";                  // 替换为用户的 SecretId
$secretKey = "COS_SECRETKEY";                // 替换为用户的 SecretKey

$region = "REGION";                          // 替换为用户的 Region
$domain = "DOMAIN.COM";                      // 替换为用户的 Domain

$formatRegion = sprintf("cos.%s", $region);  // 格式化为标准的 Region (前方加 cos.)
$endpoint = sprintf("%s.%s", $formatRegion, $domain);
                                             // 通过 FormatRegion 和 Domain 生成 Endpoint

$cosClient = new Qcloud\Cos\Client(
    array(
        'schema' => 'http',       // 协议头部,默认为http
        'region' => $region,      // Region
        'endpoint' => $endpoint,  // Endpoint
        'credentials'=> array(
            'secretId'  => $secretId ,
            'secretKey' => $secretKey)));

### 简单下载预签名
try {
    $command = $cosClient->getCommand('getObject', array(
        'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
        'Key' => "exampleobject" //对象在存储桶中的位置,即对象键
    ));
    $signedUrl = $command->createPresignedUrl('+10 minutes');
    // 请求成功
    echo ($signedUrl);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

### 使用封装的 getObjectUrl 获取下载签名
try {    
    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    $key = "exampleobject"; //对象在存储桶中的位置,即对象键
    $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes');
    // 请求成功
    echo $signedUrl;
} catch (\Exception $e) {
    // 请求失败
    print_r($e);
}

临时密钥预签名请求示例

上传请求示例

$secretId = "COS_SECRETID";                  // 临时密钥 SecretId
$secretKey = "COS_SECRETKEY";                // 临时密钥 SecretKey
$tmpToken = "COS_TMPTOKEN"                   // 临时密钥 Token

$region = "REGION";                          // 替换为用户的 Region
$domain = "DOMAIN.COM";                      // 替换为用户的 Domain

$formatRegion = sprintf("cos.%s", $region);  // 格式化为标准的 Region (前方加 cos.)
$endpoint = sprintf("%s.%s", $formatRegion, $domain);
                                             // 通过 FormatRegion 和 Domain 生成 Endpoint

$cosClient = new Qcloud\Cos\Client(
    array(
        'schema' => 'http',       // 协议头部,默认为http
        'region' => $region,      // Region
        'endpoint' => $endpoint,  // Endpoint
        'credentials'=> array(
            'secretId'  => $secretId ,
            'secretKey' => $secretKey,
            'token' => $tmpToken)));

### 简单上传预签名
try {
    $command = $cosClient->getCommand('putObject', array(
        'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
        'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
        'Body' => '', 
    ));
    $signedUrl = $command->createPresignedUrl('+10 minutes');
    // 请求成功
    echo ($signedUrl);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

### 分块上传预签名
try {
    $command = $cosClient->getCommand('uploadPart', array(
        'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
        'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
        'UploadId' => '',
        'PartNumber' => '1',
        'Body' => '', 
    ));
    $signedUrl = $command->createPresignedUrl('+10 minutes');
    // 请求成功
    echo ($signedUrl);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

下载请求示例

$secretId = "COS_SECRETID";                  // 临时密钥 SecretId
$secretKey = "COS_SECRETKEY";                // 临时密钥 SecretKey
$tmpToken = "COS_TMPTOKEN"                   // 临时密钥 Token

$region = "REGION";                          // 替换为用户的 Region
$domain = "DOMAIN.COM";                      // 替换为用户的 Domain

$formatRegion = sprintf("cos.%s", $region);  // 格式化为标准的 Region (前方加 cos.)
$endpoint = sprintf("%s.%s", $formatRegion, $domain);
                                             // 通过 FormatRegion 和 Domain 生成 Endpoint

$cosClient = new Qcloud\Cos\Client(
    array(
        'schema' => 'http',       // 协议头部,默认为http
        'region' => $region,      // Region
        'endpoint' => $endpoint,  // Endpoint
        'credentials'=> array(
            'secretId'  => $secretId ,
            'secretKey' => $secretKey,
            'token' => $tmpToken)));

### 简单下载预签名
try {
    $command = $cosClient->getCommand('getObject', array(
        'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
        'Key' => "exampleobject" //对象在存储桶中的位置,即对象键
    ));
    $signedUrl = $command->createPresignedUrl('+10 minutes');
    // 请求成功
    echo ($signedUrl);
} catch (\Exception $e) {
    // 请求失败
    echo($e);
}

### 使用封装的 getObjectUrl 获取下载签名
try {    
    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    $key = "exampleobject"; //对象在存储桶中的位置,即对象键
    $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes');
    // 请求成功
    echo $signedUrl;
} catch (\Exception $e) {
    // 请求失败
    print_r($e);
}
​```

异常处理

简介

调用 SDK 接口请求 COS 服务失败时,如返回码为4xx或者5xx,系统将抛出 (Qcloud\Cos\Exception\ServiceResponseException)异常。

服务端异常

CosServerException 包含了服务端返回的状态码、requestid 和出错明细等。捕获异常后,建议对整个异常进行打印,异常包含了必须的排查因素。以下是异常成员变量的描述以及异常捕获示例:

成员 描述 类型
requestId 请求 ID,用于表示一个请求,对于排查问题十分重要 string
statusCode response 的 status 状态码 string
errorCode 请求失败时 body 返回的 Error Code string
errorMessage 请求失败时 body 返回的 Error Message string

异常捕获示例

try {
   $cosClient->listBuckets() 
} catch (\Exception $e) {
    $statusCode = $e->getStatusCode(); // 获取错误码
    $errorMessage = $e->getMessage(); // 获取错误信息
    $requestId = $e->getRequestId(); // 获取错误的 requestId
    $errorCode = $e->getCosErrorCode(); // 获取错误名称
    $request = $e->getRequest(); // 获取完整的请求
    $response = $e->getResponse(); // 获取完整的响应
}