CopyObject

更新时间: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

URI请求参数

请求头部

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

消息头名称 描述 是否必选
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>
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!