更新时间:2023-09-26 17:49:54
此接口用于为WCS上已经存在的对象创建一个副本,需要IAM wos:PutObject权限。
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
无
除使用公共请求头部外,还包含
消息头名称 | 描述 | 是否必选 |
---|---|---|
x-wos-copy-source | 用来指定复制对象操作的源空间名以及源对象名。此消息头必须进行URL编码。 类型:字符串 示例:x-wos-copy-source:/src_bucket/src_object |
是 |
x-wos-copy-source-if-match | 只有当源对象的Etag与此参数指定的值相等时才进行复制对象,否则返回412(precondition failed)。 类型:字符串 示例:x-wos-copy-source-if-match: etag 约束条件:此参数可与x-wos-copy-source-if-unmodified/modified-since一起使用,但不能与其它条件复制参数一起使用。 |
否 |
x-wos-copy-source-if-none-match | 只有当源对象的Etag与此参数指定的值不相等时才进行复制对象操作,否则返回412(precondition failed)。 类型:字符串。 示例:x-wos-copy-source-if-none-match: etag |
否 |
x-wos-copy-source-if-unmodified-since | 只有当源对象在此参数指定的时间之后没有修改过才进行复制对象操作,否则返回412(precondition 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-storage-class: Standard |
否 |
x-wos-metadata-directive | 指定目标对象默认复制源对象的元数据(COPY )还是将目标对象的元数据替换为本次复制请求中所带的元数据(REPLACE)。 类型:字符串。 示例:x-wos-metadata-directive: COPY |
否 |
x-wos-meta-* | 客户自定义元数据,会在headObject、getObject时的头部原样返回 类型:字符串。 示例:x-wos-metadata-abc: test |
否 |
无
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: WOS 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>