CopyObject
所有文档

          对象存储 BOS

          CopyObject

          接口描述

          此接口用于把一个已经存在的Object拷贝为另外一个Object,支持Object文件的长度范围是0Byte-5GB。该接口也可以用来实现Meta更新(使用replace模式且源和目标指向同一个文件)。此接口需要请求者在header中指定拷贝源。

          CopyObject接口支持跨区域文件复制,即复制文件所在的源Bucket和目标Bucket可以不在同一region(目前只支持从其它Region向本Region复制数据)。当进行跨区域文件复制时,复制产生的流量会收取跨区域流量费。跨区域收费标准参见产品定价

          请求(Request)

          • 请求语法

            PUT /<ObjectKey> HTTP/1.1
            Host: <BucketName>.bj.bcebos.com
            Date: <Date>
            Authorization: <AuthorizationString>
            Content-Length: <ContentLength>
            Content-Type:text/plain
            x-bce-copy-source: /SourceBucket/SourceObject
            x-bce-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
            x-bce-metadata-directive: <DirectiveString>
            x-bce-storage-class: <StorageClass>
          • 请求参数

          • 请求头域

            名称类型描述是否必需
            x-bce-copy-sourceString源Object地址
            x-bce-copy-source-if-matchString如果源Object的ETag值和用户提供的ETag相等,则执行拷贝操作,否则拷贝失败。
            x-bce-metadata-directiveString目的Object的Meta信息是从源Object拷贝,还是用请求传入的meta。有效值为copyreplace,缺省值为copy。如果设置为copy,则直接用源Object的meta;如果设置为replace,则用请求传入的meta。
            x-bce-copy-source-if-none-matchString如果源Object的ETag和用户提供的ETag不相等,则执行拷贝操作,否则拷贝失败。
            x-bce-copy-source-if-unmodified-sinceString 如果源object在x-bce-copy-source-if-unmodified-since之后没被修改,则执行拷贝操作,否则拷贝失败。参数取值为GMT格式,例如:Wed, 06 Apr 2016 06:34:40 GMT。
            x-bce-copy-source-if-modified-sinceString如果源object在x-bce-copy-source-if-modified-since之后被修改了,则执行拷贝操作,否则拷贝失败。参数取值为GMT格式,例如:Wed, 06 Apr 2016 06:34:40 GMT。
            x-bce-storage-classString指定Object的存储类型,STANDARD_IA代表低频存储,COLD代表冷存储,ARCHIVE代表归档存储,不指定时默认是标准存储类型;如果是多AZ类型bucket,MAZ_STANDARD_IA代表多AZ低频存储,不指定时默认是MAZ_STANDARD多AZ标准存储类型,不能是其它取值。
            x-bce-acl String CannedACL支持的header,用户设置Object的权限,取值为private和public-read。
            x-bce-grant-read String CannedACL支持的header,用户设置Object的读权限。支持多个id,以逗号分隔
            x-bce-grant-full-control String CannedACL支持的header,用户设置Object的FULL_CONTROL权限。支持多个id,以逗号分隔
            x-bce-server-side-encryption String 服务端加密算法,当前仅支持AES256。

          响应(Response)

          • 响应头域

            无特殊头域

          • 响应参数

            名称 类型 描述
            ETag String 目的Object的ETag
            lastModified DATE 目的Object的最后一次修改时间

            注意事项

            1. 请求者必须对源Object有读操作权限。
            2. 在计算签名之前,用户需要针对x-bce-copy-source字段中为非标准ASCII字符(例如:中文)的内容做一次url-encode。
            3. 为了保持复制过程中的http连接,CopyObject接口的http结果可能使用Transfer-Encoded: Chunked编码方式。
            4. CopyObject过程中,如果发生服务器端错误,http status code可能返回2XX但是复制失败,复制结果请根据http body中的json判定。
            5. CopyObject如果源object是归档类型,需要先取回归档类型才能调用CopyObject接口。
            6. 归档类型Object不支持通过CopyObject实现Meta更新(使用replace模式且源和目标指向同一个文件)。
            7. 如果复制软链接文件,并不会复制数据,只会复制软链接本身。如果使用软链接访问该接口,且软链接的目标文件删除了,会返回Http 404,SymlinkTargetNotExist。

          示例

          • 标准存储的请求示例

            PUT /ObjectName HTTP/1.1
            Host: BucketName.bj.bcebos.com
            Date: Wed, 06 Apr 2016 06:34:40 GMT
            Authorization: AuthorizationString
            Content-Length: 0
            Content-Type:text/plain
            x-bce-copy-source: /SourceBucket/SourceObject
            x-bce-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
            x-bce-metadata-directive: replace
          • 低频/冷存储的请求示例

            PUT /object HTTP/1.1
            Host: BucketName.bj.bcebos.com
            Date: Wed, 06 Apr 2016 06:34:40 GMT
            Authorization: AuthorizationString
            Content-Length: 0
            Content-Type:text/plain
            x-bce-copy-source: /SourceBucket/SourceObject
            x-bce-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
            x-bce-storage-class: STANDARD_IA
          • 响应示例

            Copy成功

            HTTP/1.1 200 OK
            x-bce-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409
            Date: Wed, 06 Apr 2016 06:34:40 GMT
            Connection: close
            Server: BceBos
            
            {
                "lastModified":"2009-10-28T22:32:00Z",
                "ETag":"9b2cf535f27731c974343645a3985328"
            }

            服务端异常, 需要根据返回json判断

            HTTP/1.1 200 OK
            Date: Thu, 12 May 2016 09:14:32 GMT
            Content-Type: application/json; charset=utf-8
            Connection: keep-alive
            Server: BceBos
            x-bce-request-id: bb90cc9c-2b80-462c-87a4-095e610c9a2f
            Transfer-Encoding: chunked
            {
                "code":"InternalError",
                "message":"We encountered an internal error. Please try again.",
                "requestId":"52454655-5345-4420-4259-204e47494e58"
            }
          上一篇
          PostObject
          下一篇
          RestoreObject