CDN加速

CopyObject

更新时间:2021-06-17 14:15:15

CopyObject

此接口用于为WCS上已经存在的对象创建一个副本。

1、一个COPY操作相当于一个GET操作和一个PUT操作。通过添加头部x-wos-copy-source,使用PUT操作将源空间的对象复制到目的空间。
2、COPY请求需要满足某些条件时,比如etag匹配或者对象在某个特定时刻之前或之后被修改过,使用请求头部x-wos-copy-source-if-match,x-wos-copy-source-if-none-match,x-wos-copy-source-if-unmodified-since,x-wos-copy-source-if-modified-since。
3、在进行对象复制操作时,目标对象默认复制源对象的元数据;用户也可将目标对象的元数据替换为本次复制请求中所带的元数据。

请求语法

PUT /destinationObjectName HTTP/1.1
Host: Bucket.Endpoint
x-wos-copy-source: /sourceBucket/sourceObject
x-wos-copy-source-if-match: etag
x-wos-copy-source-if-none-match: etag
x-wos-copy-source-if-unmodified-since: time_stamp
x-wos-meta-*:metainfo
Authorization: Authorization string
Date: date

URI请求参数

请求头部

除使用公共请求头部外,还包含

消息头名称

描述

是否必选

x-wos-copy-source

用来指定复制对象操作的源空间名以及源对象名。此消息头必须进行URL编码。
类型:字符串
示例:x-wos-copy-source:/src_bucket/src_object

x-wos-copy-source-if-match

只有当源对象的Etag与此参数指定的值相等时才进行复制对象,否则返回412precondition failed)。
类型:字符串
示例:x-wos-copy-source-if-match: etag
约束条件:此参数可与x-wos-copy-source-if-unmodified/modified-since一起使用,但不能与其它条件复制参数一起使用。

x-wos-copy-source-if-none-match

只有当源对象的Etag与此参数指定的值不相等时才进行复制对象操作,否则返回412precondition failed)。
类型:字符串。
示例:x-wos-copy-source-if-none-match: etag

x-wos-copy-source-if-unmodified-since

只有当源对象在此参数指定的时间之后没有修改过才进行复制对象操作,否则返回412precondition failed),此参数可与x-wos-copy-source-if-match一起使用,但不能与其它条件复制参数一起使用。
类型:符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。
示例:x-wos-copy-source-if-unmodified -since: timestamp

x-wos-copy-source-if-modified-since

只有当源对象在此参数指定的时间之后修改过才进行复制对象操作,否则返回412(前置条件不满足),此参数可与x-wos-copy-source-if-none-match一起使用,但不能与其它条件复制参数一起使用。
类型:符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。
示例:x-wos-copy-source-if-modified-since: time-stamp

x-wos-storage-class

定文件的存储类型,Standard-标准存储、IA-低频存储、Archive-归档存储。默认同空间的存储类型

类型:字符串。
示例:x-wos-copy-source-if-none-match: Standard

x-wos-metadata-directive

指定目标对象默认复制源对象的元数据(COPY )还是将目标对象的元数据替换为本次复制请求中所带的元数据(REPLACE)。

类型:字符串。
示例:x-wos-metadata-directiveCOPY 


x-wos-meta-*

客户自定义元数据,会在headObject、getObject时的头部原样返回

类型:字符串。
示例:x-wos-metadata-abctest

请求主体

响应语法

HTTP/1.1 status_code
x-wos-request-id: request id
Content-Type: type
Date: date
Content-Length: length
Server: WS-web-server

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CopyObjectResult xmlns=" http://wcs.chinanetcenter.com/document">
    <LastModified>modifiedDate</LastModified>
    <ETag>etagValue</ETag>
</CopyObjectResult>

响应头部

仅使用公共响应头部

响应元素

元素名称

描述

CopyObjectResult

复制对象结果的Container
类型:XML

LastModified

对象上次修改的时间
类型:字符串

ETag

新对象的ETag
类型:字符串

特殊错误

Situation

Http Status

Error Code

Message

格式不对,如缺少拷贝对象

400 Bad Request

InvalidArgument

Copy Source must mention the source bucket and key: sourcebucket/sourcekey

拷贝对象大于5G

400 Bad Request

EntityTooLarge

Your proposed copy exceeds the maximum allowed object size.

操作的源空间,文件名和目的空间和文件名一样(拷贝自己)

400 Bad Request

InvalidRequest

This copy request is illegal because it is trying to copy an object to itself without changing the object's metadata attribute.

示例

PUT /destobject HTTP/1.1
Host: bucket.s3-cn-east-1.wcsapi.com
Date: Sat, 03 Dec 2011 08:48:07 +0000
Authorization: AWS BF6C09F302931425E9A7:2rZR+iaH8xUewvUKuicLhLHpNoU=
x-wos-copy-source: /srcbucket/srcobject

HTTP/1.1 200 OK
x-wos-request-id: 318BC8BC148832E5
Date: Wed, 28 Oct 2009 22:32:00 GMT
Connection: close
Server: WS-Web-Server
<CopyObjectResult>
  <LastModified>2009-10-28T22:32:00</LastModified>
  <ETag>"9b2cf535f27731c974343645a3985328"</ETag>
</CopyObjectResult>