Appearance
CopyObject
接口描述
此接口用于把一个已经存在的Object拷贝为另外一个Object,支持Object文件的长度范围是0Byte-5GB。该接口也可以用来实现Meta更新(使用replace模式且源和目标指向同一个文件)。此接口需要请求者在header中指定拷贝源。
请求(Request)
请求语法
PUT /<BucketName>/<ObjectKey> HTTP/1.1
Host: fos.flymeyun.com
Date: <Date>
Content-Length: <ContentLength>
Content-Type:text/plain
x-fos-copy-source: /SourceBucket/SourceObject
x-fos-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
x-fos-metadata-directive: <DirectiveString>
请求参数
无
请求头域
x-fos-copy-source | String | 源Object地址 | 是 |
---|---|---|---|
x-fos-copy-source-if-match | String | 如果源Object的ETag值和用户提供的ETag相等,则执行拷贝操作,否则拷贝失败。 | 否 |
x-fos-metadata-directive | String | 目的Object的Meta信息是从源Object拷贝,还是用请求传入的meta。有效值为copy和replace,缺省值为copy。如果设置为copy,则直接用源Object的meta;如果设置为replace,则用请求传入的meta。 | 否 |
x-fos-meta-* | String | replace模式下启动,可修改用户自定义meta,自定义meta是用来保存对象的自定义信息。例如设置文件的标签,参数用“x-fos-meta-gender”,值设置为“Male”。 | 否 |
x-fos-copy-source-if-none-match | String | 如果源Object的ETag和用户提供的ETag不相等,则执行拷贝操作,否则拷贝失败。 | 否 |
x-fos-copy-source-if-unmodified-since | String | 如果源object在x-fos-copy-source-if-unmodified-since之后没被修改,则执行拷贝操作,否则拷贝失败。参数取值为GMT格式,例如:Wed, 06 Apr 2016 06:34:40 GMT。 | 否 |
x-fos-copy-source-if-modified-since | String | 如果源object在x-fos-copy-source-if-modified-since之后被修改了,则执行拷贝操作,否则拷贝失败。参数取值为GMT格式,例如:Wed, 06 Apr 2016 06:34:40 GMT。 | 否 |
响应(Response)
响应头域
无特殊头域
响应参数
名称 | 类型 | 描述 |
---|---|---|
ETag | String | 目的Object的ETag |
lastModified | DATE | 目的Object的最后一次修改时间 |
注意事项
- 请求者必须对源Object有读操作权限。
- 在计算签名之前,用户需要针对x-fos-copy-source字段中为非标准ASCII字符(例如:中文)的内容做一次url-encode。
- 为了保持复制过程中的http连接,CopyObject接口的http结果可能使用Transfer-Encoded: Chunked编码方式。
- CopyObject过程中,如果发生服务器端错误,http status code可能返回2XX但是复制失败,复制结果请根据http body中的json判定。
示例
请求示例
PUT /BucketName/ObjectName HTTP/1.1
Host: fos.flymeyun.com
Date: Wed, 06 Apr 2016 06:34:40 GMT
Content-Length: 0
Content-Type:text/plain
x-fos-copy-source: /SourceBucket/SourceObject
x-fos-copy-source-if-match: 3858f62230ac3c915f300c664312c11f
x-fos-metadata-directive: replace
x-fos-meta-mykey: myvalue
响应示例
Copy成功
HTTP/1.1 200 OK
x-fos-request-id: 4db2b34d-654d-4d8a-b49b-3049ca786409
Date: Wed, 06 Apr 2016 06:34:40 GMT
Connection: close
{
"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
x-fos-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"
}