对象操作

最后更新时间:2020-08-28 18:26:03

    简介

    本文档提供关于对象的高级接口,简单操作、分块操作相关的 API 概览以及 SDK 示例代码。

    简单操作

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

    分块操作

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

    简单操作

    查询对象列表

    功能说明

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

    方法原型

    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' => 'doc/picture.jpg',
            'VersionIdMarker' => 'MTg0NDUxODMyMTE2ODY0OTExOTk3W',
            '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),最大支持上传不超过5GB的对象,5GB以上对象请使用 分块上传高级接口 上传。

    方法原型

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

    请求示例

    示例一:上传本地文件

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

    示例二:上传归档文件

    try { 
        $result = $cosClient->putObject(array( 
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID 
            'Key' => 'exampleobject', 
            'Body' => fopen('path/to/localFile', 'rb'), 
            'StorageClass' => 'Archive'
        )); 
        // 请求成功 
        print_r($result); 
    } catch (\Exception $e) { 
        // 请求失败 
        echo($e); 
    }

    示例三:上传指定 Content-type 的文件

    try { 
        $result = $cosClient->putObject(array( 
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID 
            'Key' => 'exampleobject', 
            'Body' => fopen('path/to/localFile', 'rb'), 
            'ContentType' => 'text/xml'
        )); 
        // 请求成功 
        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 、 STANDARD_IA 、 ARCHIVE,默认值: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());

    请求示例

    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 、 STANDARD_IA 、 ARCHIVE
    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' => 'path/to/localFile',
        )); 
        // 请求成功
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例二:按照 range 获取文件内容

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

    示例三:下载指定版本的文件

    try {
        $result = $cosClient->getObject(array(
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
            'Key' => 'exampleobject',
            'VersionId' => 'exampleVersionId'
        )); 
        // 请求成功
        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 、 STANDARD_IA 、 ARCHIVE,默认值: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' => 'sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject',
        )); 
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例二:复制指定版本的对象

    try {
        $result = $cosClient->copyObject(array(
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
            'Key' => 'exampleobject',
            'CopySource' => 'sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject?versionId=MTg0NDUxNjI3NTM0ODE2Njc0MzU',
        )); 
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例三:修改存储类型为归档

    try {
        $result = $cosClient->copyObject(array(
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
            'Key' => 'exampleobject',
            'CopySource' => 'sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject',
            'StorageClass' => 'Archive'
        )); 
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例四:修改 meta 属性

    try {
        $result = $cosClient->copyObject(array(
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
            'Key' => 'exampleobject',
            'CopySource' => 'sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject',
            'MetadataDirective' => 'Replaced',
            'Metadata' => array(
                'key1' => 'value1',
                'key2' => 'value2',
            )
        )); 
        // 请求成功
        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' => 'exampleVersionId'
        )); 
        // 请求成功
        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

    恢复归档对象

    功能说明

    将归档类型的对象取回访问(POST Object restore)。

    方法原型

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

    请求示例

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

    参数说明

    参数名称 类型 描述 是否必填
    Bucket String 存储桶名称,格式:BucketName-APPID
    Key String 对象键
    Days String 设置临时副本的过期时间,单位(天)
    CASJobParameters Array 恢复信息
    Tier String 恢复数据时,Tier 可以指定为 CAS 支持的三种恢复类型,分别为 Expedited、Standard、Bulk

    分块操作

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

    • 分块上传对象: 初始化分块上传, 上传分块, 完成分块上传。
    • 分块续传:查询已上传块, 上传分块,完成分块上传。
    • 删除已上传分块。

    查询分块上传

    功能说明

    查询指定存储桶中正在进行的分块上传(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' => 'prfixKeyMarker',
            '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',
        )); 
        // 请求成功
        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 、 STANDARD_IA 、 ARCHIVE,默认值: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

    -上传分块-">

    上传分块

    分块上传文件(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' => 'exampleUploadId', //UploadId 为对象分块上传的 ID,在分块上传初始化的返回参数里获得 
            'PartNumber' => 1, //PartNumber 为分块的序列号,COS 会根据携带序列号合并分块
        )); 
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    参数说明

    参数名称 类型 描述 是否必填
    Bucket String 存储桶名称,格式:BucketName-APPID
    Key String 对象键
    UploadId String UploadId 为对象分块上传的 ID,在分块上传初始化的返回参数里获得
    Body File/String 上传的内容
    PartNumber Int PartNumber 为分块的序列号,COS 会根据携带序列号合并分块
    ContentLength Int 设置传输长度
    ContentMD5 String 设置上传文件的 MD5 值用于校验

    返回结果示例

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

    返回结果说明

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

    复制分块

    功能说明

    将其他对象复制为一个分块(Upload Part - Copy)。

    方法原型

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

    请求示例

    try {
        $result = $cosClient->uploadPartCopy(array(
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
            'Key' => 'exampleobject', 
            'CopySource' => 'sourcebucket-1250000000.cos.ap-guangzhou.myqcloud.com/sourceObject',
            'CopySourceRange' => 'bytes=0-1', //这里举例只拷贝前两个字节
            'UploadId' => 'exampleUploadId', //UploadId 为对象分块上传的 ID,在分块上传初始化的返回参数里获得 
            'PartNumber' => 1, //PartNumber 为分块的序列号,COS 会根据携带序列号合并分块
        )); 
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    参数说明

    参数名称 类型 描述 是否必填
    Bucket String 存储桶名称,格式:BucketName-APPID
    Key String 对象键
    UploadId String UploadId 为对象分块上传的 ID,在分块上传初始化的返回参数里获得
    CopySource String 描述拷贝源文件的路径,包含 APPID、Bucket、Key、Region,
    例如examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg
    CopySourceRange String 描述拷贝源对象的范围,格式为 bytes=first-last。不指定时,默认拷贝整个源对象
    PartNumber Int PartNumber 为分块的序列号,COS 会根据携带序列号合并分块
    ContentLength Int 设置传输长度
    ContentMD5 String 设置上传文件的 MD5 值用于校验

    返回结果示例

    Guzzle\Service\Resource\Model Object
    (
        [structure:protected] => 
        [data:protected] => Array
            (
                [ETag] => "96e79218965eb72c92a549dd5a330112"
                [LastModified] => "2017-09-04T04:45:45"
                [RequestId] => NWNhNDdjYWFfNjNhYjM1MGFfMjk2NF8xY2ViMWM=
            )
    
    )

    返回结果说明

    参数名称 类型 描述 父节点
    ETag String 分块的 MD5 值
    LastModified String 返回对象最后修改时间,GMT 格式

    -查询已上传块-">

    查询已上传块

    功能说明

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

    方法原型

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

    请求示例

    try {
        $result = $cosClient->listParts(array(
            'Bucket' => 'examplebucket-1250000000', //格式:BucketName-APPID
            'Key' => 'exampleobject',
            'UploadId' => 'exampleUploadId',
            '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

    -完成分块上传-">

    完成分块上传

    功能说明

    完成整个文件的分块上传(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' => 'exampleUploadId',
            'Parts' => array(
                array(
                    'ETag' => 'exampleETag',
                    'PartNumber' => 1,
                )), 
                // ... 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' => 'exampleUploadId',
        )); 
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    参数说明

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

    高级接口(推荐)

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

    复合上传

    功能说明

    该接口内部会根据文件大小,对小文件调用简单上传接口,对大文件调用分块上传接口。接口参数可参照PUT ObjectUpload Part接口。

    请求示例

    示例一:上传本地对象

    try {
        $result = $cosClient->Upload(
            $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
            $key = 'exampleobject',
            $body = fopen('path/to/localFile', 'rb')
        );
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例二:上传归档对象

    try {
        $result = $cosClient->Upload(
            $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
            $key = 'exampleobject',
            $body = fopen('path/to/localFile', 'rb'),
            $options = array(
                'StorageClass' => 'Archive'
            )
        );
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例三:指定单个分块大小上传带有 meta 的对象

    try {
        $result = $cosClient->Upload(
            $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
            $key = 'exampleobject',
            $body = fopen('path/to/localFile', 'rb'),
            $options = array(
                'Metadata' => array(
                    'string' => 'string',
                ),
                'PartSize' => 10 * 1024 * 1024
            )
        );
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    复合复制

    功能说明

    该接口内部会根据文件大小,对小文件调用设置对象复制接口,对大文件调用分块复制接口。接口参数可参照PUT Object - CopyUpload Part - Copy接口。

    请求示例

    示例一:复制对象

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

    示例二:转换对象存储类型

    try {
        $result = $cosClient->Copy(
            $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
            $key = 'exampleobject',
            $copySorce = array(
                'Region' => 'COS_REGION', 
                'Bucket' => 'examplebucket-1250000000', 
                'Key' => 'exampleobject', 
            ),
            $options = array(
                'StorageClass' => 'Archive'
            )
        );
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    示例三:修改对象存储属性
    try {
        $result = $cosClient->Copy(
            $bucket = 'examplebucket-1250000000', //格式:BucketName-APPID
            $key = 'exampleobject',
            $copySorce = array(
                'Region' => 'COS_REGION', 
                'Bucket' => 'sourcebucket-1250000000', 
                'Key' => 'sourceObject', 
            ),
            $options = array(
                'MetadataDirective' => 'Replaced',
                'Metadata' => array(
                    'string' => 'string',
                ),
            )
        );
        // 请求成功
        print_r($result);
    } catch (\Exception $e) {
        // 请求失败
        echo($e);
    }

    Was this page helpful?

    本页内容是否解决了您的问题?

    • 完全没帮助
    • 文档较差
    • 文档一般
    • 文档不错
    • 文档很好
    反馈
    帮助