接口文档

最近更新时间: 2025-02-18 16:02: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);
}

参数说明

参数名称类型描述父节点
BucketString存储桶名称,格式: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);
}

参数说明

参数名称类型描述父节点
BucketString存储桶名称,格式: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);
}

参数说明

参数名称类型描述父节点
BucketString存储桶名称,格式: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";
}

参数说明

参数名称类型描述父节点
BucketString存储桶名称,格式:BucketName-APPID
GrantsArrayACL权限列表
GrantArrayACL权限信息Grants
GranteeArrayACL权限信息Grant
TypeString所有者权限类型Grantee
PermissionString权限类型,可选值: FULL_CONTROL 、 WRITE 、 READGrant
ACLString整体权限类型,可选值:private 、 public-read 、public-read-write
OwnerString存储桶所有者信息
DisplayNameString权限所有者的名字信息Grantee/Owner
IDString权限所有者 IDGrantee/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=
        )
)

返回结果说明

参数名称类型描述父节点
GrantsArrayACL 权限列表
GrantArrayACL 权限信息Grants
GranteeArrayACL 权限信息Grant
PermissionString权限类型,可选值: FULL_CONTROL 、WRITE 、 READGrant
OwnerString存储桶所有者信息
DisplayNameString权限所有者的名字信息Grantee/Owner
IDString权限所有者 IDGrantee/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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
DelimiterString默认为空,设置分隔符,比如设置`/`来模拟文件夹
EncodingTypeString默认不编码,规定返回值的编码方式,可选值:url
MarkerString默认以 UTF-8 二进制顺序列出条目,标记返回 objects 的 list 的起点位置
PrefixString默认为空,对 object 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxKeysInt最多返回的 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=
        )

)

返回结果说明

参数名称类型描述父节点
NameString存储桶名称,格式:BucketName-APPID
DelimiterString设置分隔符,比如设置`/`来模拟文件夹
EncodingTypeString规定返回值的编码方式
MarkerString默认以 UTF-8 二进制顺序列出条目,标记返回 objects 的 list 的起点位置
PrefixString对 object 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxKeysInt最多返回的 objects 数量,默认为最大的1000
IsTruncatedInt表示返回的 objects 否被截断
ContentsArray返回的对象列表
ContentArray返回的对象属性,包含所有 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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,由 BucketName-APPID 构成
PrefixString默认为空,对对象的对象键进行筛选,匹配 prefix 为前缀的对象
DelimiterString默认为空,设置分隔符,比如设置`/`来模拟文件夹
KeyMarkerString默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 Key 的起点位置
VersionIdMarkerString默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 VersionId 的起点位置
MaxKeysInt最多返回的对象数量,默认为最大的1000
EncodingTypeString默认不编码,规定返回值的编码方式,可选值: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
        )

)

返回结果说明

参数名称类型描述父节点
NameString存储桶名称,格式:BucketName-APPID
DelimiterString设置分隔符,比如设置`/`来模拟文件夹
EncodingTypeString规定返回值的编码方式
KeyMarkerString默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 Key 的起点位置
VersionIdMarkerString默认以 UTF-8 二进制顺序列出条目,标记返回对象的 list 的 VersionId 的起点位置
NextKeyMarkerString当 IsTruncated 为 true 时,标记下一次返回对象的 list 的 Key 的起点位置
NextVersionIdMarkerString当 IsTruncated 为 true 时,标记下一次返回对象的 list 的 VersionId 的起点位置
PrefixString对 object 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxKeysInt最多返回的 objects 数量,默认为最大的1000
IsTruncatedInt表示返回的 objects 否被截断
VersionsArray包含所有多个版本对象元数据的 list
VersionArray包含所有多个版本对象元数据的 list,包括 'ETag','StorageClass','Key','VersionId','IsLatest','Owner','LastModified','Size' 等信息Versions
CommonPrefixesArray所有以 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); 
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
ACLString设置对象的 ACL,如 private、public-read
BodyFile/String上传的内容
CacheControlString缓存策略,设置 Cache-Control
ContentDispositionString文件名称,设置 Content-Disposition
ContentEncodingString编码格式,设置 Content-Encoding
ContentLanguageString语言类型,设置 Content-Language
ContentLengthInt设置传输长度
ContentTypeString内容类型,设置 Content-Type
ExpiresString设置 Content-Expires
MetadataArray用户自定义的文件元信息
StorageClassString文件的存储类型,默认值:STANDARD
ContentMD5String设置上传文件的 MD5 值用于校验
ServerSideEncryptionString服务端加密方法

返回结果示例

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
        )

)

返回结果说明

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

查询对象元数据

功能说明

查询 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);
}

参数说明

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

返回结果示例

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=
        )

)

返回结果说明

参数名称类型描述父节点
CacheControlString缓存策略,设置 Cache-Control
ContentDispositionString文件名称,设置 Content-Disposition
ContentEncodingString编码格式,设置 Content-Encoding
ContentLanguageString语言类型,设置 Content-Language
ContentLengthInt设置传输长度
ContentTypeString内容类型,设置 Content-Type
MetadataArray用户自定义的文件元信息
StorageClassString文件的存储类型,默认值:STANDARD
ServerSideEncryptionString服务端加密方法
ETagString文件的MD5值
RestoreString归档文件的回热信息

下载对象

功能说明

下载对象到本地(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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
SaveAsString保存到本地的本地文件路径
VersionIdString开启多版本后,指定文件的具体版本
RangeString设置下载文件的范围,格式为 bytes=first-last
ResponseCacheControlString设置响应头部 Cache-Control
ResponseContentDispositionString设置响应头部 Content-Disposition
ResponseContentEncodingString设置响应头部 Content-Encoding
ResponseContentLanguageString设置响应头部 Content-Language
ResponseContentTypeString设置响应头部 Content-Type
ResponseExpiresString设置响应头部 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
        )

)

返回结果说明

参数名称类型描述父节点
BodyFile/String下载内容
ETagString文件的 MD5 值
ExpiresStringContent-Expires
MetadataArray用户自定义的文件元信息
StorageClassString文件的存储类型,默认值:STANDARD
ContentMD5String设置上传文件的 MD5 值用于校验
ServerSideEncryptionString服务端加密方法
CacheControlString缓存策略,设置 Cache-Control
ContentDispositionString文件名称,设置 Content-Disposition
ContentEncodingString编码格式,设置 Content-Encoding
ContentLanguageString语言类型,设置 Content-Language
ContentLengthInt设置传输长度
ContentTypeString内容类型,设置 Content-Type
MetadataArray用户自定义的文件元信息
RestoreString归档文件的回热信息

设置对象复制

将一个对象复制到目标路径(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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
CopySourceString描述拷贝源文件的路径,包含 Appid、Bucket、Key、Region,例如 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg
MetadataDirectiveString可选值为 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);
}

参数说明

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

删除多个对象

功能说明

在存储桶中批量删除 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);
}

参数说明

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

返回结果示例

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==
        )
)

返回结果说明

参数名称类型描述父节点
DeletedArray成功删除的对象的列表
ErrorsArray失败删除的对象的列表
KeyString对象键Deleted/Errors
CodeString失败错误码Errors
MessageString失败错误信息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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
DelimiterString默认为空,设置分隔符,比如设置`/`来模拟文件夹
EncodingTypeString默认不编码,规定返回值的编码方式,可选值:url
KeyMarkerString标记返回 parts 的 list 的起点位置
UploadIdMarkerString标记返回 parts 的 list 的起点位置
PrefixString默认为空,对 parts 的 key 进行筛选,匹配指定前缀(prefix)的 objects
MaxUploadsInt最多返回的 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
        )

)

返回结果说明

参数名称类型描述父节点
BucketString存储桶名称,格式:BucketName-APPID
IsTruncatedInt表示返回的 objects 否被截断
UploadsArray返回的分块列表
UploadArray返回的分块属性Uploads
KeyString对象健名Upload
UploadIdString对象的分块上传 IDUpload
InitiatorString初始化该分片的操作者Upload
OwnerString分块拥有者Upload
StorageClassString分块存储类型Upload
InitiatedString分块初始化时间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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg 中,对象键为 doc/pic.jpg
CacheControlString缓存策略,设置 Cache-Control
ContentDispositionString文件名称,设置 Content-Disposition
ContentEncodingString编码格式,设置 Content-Encoding
ContentLanguageString语言类型,设置 Content-Language
ContentLengthInt设置传输长度
ContentTypeString内容类型,设置 Content-Type
ExpiresString设置 Content-Expires
MetadataArray用户自定义的文件元信息
StorageClassString文件的存储类型,默认值:STANDARD
ContentMD5String设置上传文件的 MD5 值用于校验
ServerSideEncryptionString服务端加密方法

返回结果示例

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

)

返回结果说明

参数名称类型描述父节点
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
UploadIdString对象分块上传的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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
UploadIdString对象分块上传的 ID
PartNumberMarkerInt标记返回 parts 的 list 的起点位置
MaxPartsInt最多返回的 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=
        )

)

返回结果说明

参数名称类型描述父节点
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
UploadIdString对象分块上传的 ID
IsTruncatedInt表示返回的 objects 否被截断
PartNumberMarkerInt标记返回 parts 的 list 的起点位置
MaxPartsInt最多返回的 parts 数量,默认最大值为1000
InitiatorString初始化该分片的操作者
PartsArray返回的分块列表
PartArray返回的分块属性Parts
PartNumberInt分块标号Part
LastModifiedString分块的最后上传时间Part
ETagString分块的 MD5 值Part
SizeString分块的大小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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
UploadIdString对象分块上传的 ID
BodyFile/String上传的内容
PartNumberInt上传分块的编号
ContentLengthInt设置传输长度
ContentMD5String设置上传文件的 MD5 值用于校验

返回结果示例

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

)

返回结果说明

参数名称类型描述父节点
ETagString分块的 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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
UploadIdString对象分块上传的 ID
PartsArray分块信息列表
PartArray上传分块的内容信息
ETagString分块内容的 MD5
PartNumberInt分块编号

终止分块上传

功能说明

终止一个分块上传操作并删除已上传的块(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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
UploadIdString对象分块上传的 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";
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
KeyString对象键
GrantsArrayACL权限列表
GrantArrayACL权限信息
GranteeArrayACL权限信息
TypeString所有者权限类型
PermissionString权限类型,可选值: FULL_CONTROL 、WRITE 、READ
ACLString整体权限类型,可选值: private 、 public-read
OwnerString存储桶所有者信息
DisplayNameString权限所有者的名字信息
IDString权限所有者 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=
        )
)

返回结果说明

参数名称类型描述父节点
GrantsArrayACL权限列表
GrantArrayACL权限信息Grants
GranteeArrayACL权限信息Grant
PermissionString权限类型,可选值: FULL_CONTROL 、WRITE 、 READGrant
OwnerString存储桶所有者信息
DisplayNameString权限所有者的名字信息Grantee / Owner
IDString权限所有者 IDGrantee / 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";
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
CORSRulesArray跨域信息列表
CORSRuleArray跨域信息
AllowedMethodsString允许的 HTTP 操作,枚举值:GET,PUT,HEAD,POST,DELETE
AllowedOriginsString允许的访问来源,支持通配符 `*`, 格式为:协议://域名[:端口]如:`http://www.qq.com`
AllowedHeadersString在发送 OPTIONS 请求时告知服务端,接下来的请求可以使用哪些自定义的 HTTP 请求头部,支持通配符`*`
ExposeHeadersString设置浏览器可以接收到的来自服务器端的自定义头部信息
MaxAgeSecondsInt设置 OPTIONS 请求得到结果的有效期
IDString配置规则的 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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式: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=
        )
)

返回结果说明

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

删除跨域配置

功能说明

删除指定存储桶的跨域名访问配置(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);
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式: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";
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式:BucketName-APPID
StatusString版本控制策略,可选值为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";
}

参数说明

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

返回结果说明

参数名称类型描述父节点
StatusString版本控制策略,可选值为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";
}

参数说明

参数名称类型描述必填
BucketString源存储桶名称,格式:BucketName-APPID
RoleString发起者身份标示, 格式为 qcs::cam::uin/:uin/
RulesArray设置对应的规则,包括 ID,Status,Prefix,Destination
IDString设置规则的 ID
StatusString设置 Rule 是否启用,可选值为 Enabled 或者 Disabled
PrefixString设置 Rule 的前缀匹配规则,为空时表示作用存储桶中的所有 objects
DestinationString描述目的资源, 包括 Bucket 和 StorageClass
BucketString设置跨地域复制的目标存储桶,格式为 qcs::cos:[region]::[BucketName-APPID]
StorageClassString设置目的文件的存储类型,默认值:'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";
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式: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=
        )
)

返回结果说明

参数名称类型描述父节点
RoleString发起者身份标示, 格式为 qcs::cam::uin/:uin/
RulesArray设置对应的规则,包括 ID,Status,Prefix,Destination
RuleArray设置对应的规则,包括 ID,Status,Prefix,DestinationRules
IDString设置规则的 IDRule
StatusString设置 Rule 是否启用,可选值为 Enabled 或者 DisabledRule
PrefixString设置 Rule 的前缀匹配规则,为空时表示作用存储桶中的所有 objectsRule
DestinationString描述目的资源, 包括 Bucket 和 StorageClassRule
BucketString设置跨地域复制的目标存储桶,格式为 qcs::cos:[region]::[BucketName-APPID]Destination
StorageClassString设置目的文件的存储类型,默认值:'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";
}

参数说明

参数名称类型描述必填
BucketString存储桶名称,格式: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
statusCoderesponse 的 status 状态码string
errorCode请求失败时 body 返回的 Error Codestring
errorMessage请求失败时 body 返回的 Error Messagestring

异常捕获示例

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(); // 获取完整的响应
}