CopyObject

更新时间:2025-08-25 16:19:37

该API用于对对象存储中已存在的对象进行复制操作,需要IAM wos:PutObject权限。

  1. 可以将COPY操作视为GET操作与PUT操作的结合。通过在请求头中添加 x-wos-copy-source,可通过PUT操作将对象副本移动到目标存储空间。
  2. 如果希望对复制对象做条件限制,例如仅当etag相符或对象在某时刻前/后被修改时才可复制,请设置请求头 x-wos-copy-source-if-matchx-wos-copy-source-if-none-matchx-wos-copy-source-if-unmodified-sincex-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 指定源存储空间(bucket)和源对象名。该头部必须进行URL编码。
类型:String
示例:x-wos-copy-source:/src_bucket/src_object
x-wos-copy-source-if-match 仅当x-wos-copy-source-if-match的值与源对象的etag匹配时才执行复制操作,否则返回412(precondition failed)。
类型:String
示例:x-wos-copy-source-if-match: etag
约束:不可与其他参数同时使用,除非与x-wos-copy-source-if-unmodified/modified-since配合。
x-wos-copy-source-if-none-match 仅当x-wos-copy-source-if-none-match的值与源对象etag不符时才执行复制操作,否则返回412(precondition failed)。
类型:String
示例:x-wos-copy-source-if-none-match: etag
x-wos-copy-source-if-unmodified-since 仅当源对象在此参数指定时间之后未被修改,才执行复制操作,否则返回412(precondition failed)。
类型:HTTP时间字符串格式
示例:x-wos-copy-source-if-unmodified-since: timestamp
该参数仅可与x-wos-copy-source-if-match一同使用。
x-wos-copy-source-if-modified-since 仅当源对象在此参数指定时间段内被修改,才执行复制操作,否则返回412(前置条件失败)。
类型:HTTP时间字符串格式
示例:x-wos-copy-source-if-modified-since: time-stamp
该参数仅可与x-wos-copy-source-if-none-match一同使用。
x-wos-metadata-directive 使用x-wos-meta-*中的元数据(REPLACE)替换目标对象元数据,或不替换仅复制源对象的元数据(COPY)。
类型:String
示例:x-wos-metadata-directive: COPY
x-wos-meta-* 自定义元数据,将在headObjectgetObjectType的header中返回。
类型:String
示例:x-wos-meta-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 对象最后修改时间。类型:String
ETag 新对象的ETag值。类型:String

特殊错误信息

情况 HTTP 状态 错误码 错误信息
格式错误,如缺少拷贝对象 400 Bad Request InvalidArgument Copy Source must mention the source bucket and key: sourcebucket/sourcekey
拷贝对象大于 5 GB 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>
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!