设置对象复制

功能说明

将一个文件从源路径复制到目标路径。建议文件大小1M 到5G,超过5G 的文件请使用分块上传 Upload - Copy。在拷贝的过程中,文件元属性和 ACL 可以被修改。用户可以通过该接口实现文件移动,文件重命名,修改文件属性和创建副本。

注意:在跨帐号复制的时候,需要先设置被复制文件的权限为公有读,或者对目标帐号赋权,同帐号则不需要。

方法原型

  1. func (s *ObjectService) Copy(ctx context.Context, key, sourceURL string, opt *ObjectCopyOptions) (*ObjectCopyResult, *Response, error)

请求示例

  1. u, _ := url.Parse("http://test-1253846586.cos.ap-guangzhou.myqcloud.com")
  2. source := "test/objectMove_src"
  3. soruceURL := fmt.Sprintf("%s/%s", u.Host, source)
  4. dest := "test/objectMove_dest"
  5. //opt := &cos.ObjectCopyOptions{}
  6. r, resp, err := client.Object.Copy(context.Background(), dest, soruceURL, nil)

参数说明

  1. type ObjectCopyOptions struct {
  2. *ObjectCopyHeaderOptions
  3. *ACLHeaderOptions
  4. }
  5. type ACLHeaderOptions struct {
  6. XCosACL string
  7. XCosGrantRead string
  8. XCosGrantWrite string
  9. XCosGrantFullControl string
  10. }
  11. type ObjectCopyHeaderOptions struct {
  12. XCosMetadataDirective string
  13. XCosCopySourceIfModifiedSince string
  14. XCosCopySourceIfUnmodifiedSince string
  15. XCosCopySourceIfMatch string
  16. XCosCopySourceIfNoneMatch string
  17. XCosStorageClass string
  18. // 自定义的 x-cos-meta-* header
  19. XCosMetaXXX *http.Header
  20. XCosCopySource string
  21. }
参数名称参数描述类型必填
key对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg 中,对象键为 doc1/pic1.jpgstring
sourceURL描述拷贝源文件的 URLstring
XCosACL设置文件的 ACL,如 private,public-read,public-read-writestring
XCosGrantFullControl赋予指定账户对文件的读写权限。格式为:id=" ",id=" "。当需要给子账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{SubUin}"当需要给根账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{OwnerUin}"例如id="qcs::cam::uin/123:uin/456",id="qcs::cam::uin/123:uin/123"string
XCosGrantRead赋予指定账户对文件的读权限。格式为id=" ",id=" "当需要给子账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{SubUin}"当需要给根账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{OwnerUin}"例如id="qcs::cam::uin/123:uin/456",id="qcs::cam::uin/123:uin/123"string
XCosGrantWrite赋予指定账户对文件的写权限。格式为id=" ",id=" "当需要给子账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{SubUin}"当需要给根账户授权时,格式为id="qcs::cam::uin/{OwnerUin}:uin/{OwnerUin}"例如id="qcs::cam::uin/123:uin/456",id="qcs::cam::uin/123:uin/123"string
XCosMetadataDirective可选值为 Copy,Replaced,设置为 Copy 时,忽略设置的用户元数据信息直接复制,设置为 Replaced 时,按设置的元信息修改元数据,当目标路径和源路径一样时,必须设置为Replacedstring
XCosCopySourceIfModifiedSince当 Object 在指定时间后被修改,则执行操作,否则返回412。可与 XCosCopySourceIfNoneMatch 一起使用,与其他条件联合使用返回冲突string
XCosCopySourceIfUnmodifiedSince当 Object 在指定时间后未被修改,则执行操作,否则返回412。可与 XCosCopySourceIfMatch 一起使用,与其他条件联合使用返回冲突string
XCosCopySourceIfMatch当 Object 的 Etag 和给定一致时,则执行操作,否则返回412。可与 XCosCopySourceIfUnmodifiedSince 一起使用,与其他条件联合使用返回冲突string
XCosCopySourceIfNoneMatch当 Object 的 Etag 和给定不一致时,则执行操作,否则返回412。可与 XCosCopySourceIfModifiedSince 一起使用,与其他条件联合使用返回冲突string
XCosStorageClass设置文件的存储类型,STANDARD、STANDARD_IA,默认值:STANDARDstring
XCosMetaXXX用户自定义的文件元信息http.Header
XCosCopySource源文件 URL 路径,可以通过 versionid 子资源指定历史版本string

返回结果说明

上传文件的属性:

  1. type ObjectCopyResult struct {
  2. ETag string
  3. LastModified string
  4. }
参数名称参数描述类型
ETag拷贝文件的 MD5 值string
LastModified拷贝文件的最后一次修改时间string