设置对象复制
功能说明
将一个文件从源路径复制到目标路径。建议文件大小1M 到5G,超过5G 的文件请使用分块上传 Upload - Copy。在拷贝的过程中,文件元属性和 ACL 可以被修改。用户可以通过该接口实现文件移动,文件重命名,修改文件属性和创建副本。
注意:在跨帐号复制的时候,需要先设置被复制文件的权限为公有读,或者对目标帐号赋权,同帐号则不需要。
方法原型
func (s *ObjectService) Copy(ctx context.Context, key, sourceURL string, opt *ObjectCopyOptions) (*ObjectCopyResult, *Response, error)
请求示例
u, _ := url.Parse("http://test-1253846586.cos.ap-guangzhou.myqcloud.com")
source := "test/objectMove_src"
soruceURL := fmt.Sprintf("%s/%s", u.Host, source)
dest := "test/objectMove_dest"
//opt := &cos.ObjectCopyOptions{}
r, resp, err := client.Object.Copy(context.Background(), dest, soruceURL, nil)
参数说明
type ObjectCopyOptions struct {
*ObjectCopyHeaderOptions
*ACLHeaderOptions
}
type ACLHeaderOptions struct {
XCosACL string
XCosGrantRead string
XCosGrantWrite string
XCosGrantFullControl string
}
type ObjectCopyHeaderOptions struct {
XCosMetadataDirective string
XCosCopySourceIfModifiedSince string
XCosCopySourceIfUnmodifiedSince string
XCosCopySourceIfMatch string
XCosCopySourceIfNoneMatch string
XCosStorageClass string
// 自定义的 x-cos-meta-* header
XCosMetaXXX *http.Header
XCosCopySource string
}
参数名称 | 参数描述 | 类型 | 必填 |
---|---|---|---|
key | 对象键(Key)是对象在存储桶中的唯一标识。例如,在对象的访问域名 bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg 中,对象键为 doc1/pic1.jpg | string | 是 |
sourceURL | 描述拷贝源文件的 URL | string | 是 |
XCosACL | 设置文件的 ACL,如 private,public-read,public-read-write | string | 否 |
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 时,按设置的元信息修改元数据,当目标路径和源路径一样时,必须设置为Replaced | string | 是 |
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,默认值:STANDARD | string | 否 |
XCosMetaXXX | 用户自定义的文件元信息 | http.Header | 否 |
XCosCopySource | 源文件 URL 路径,可以通过 versionid 子资源指定历史版本 | string | 否 |
返回结果说明
上传文件的属性:
type ObjectCopyResult struct {
ETag string
LastModified string
}
参数名称 | 参数描述 | 类型 |
---|---|---|
ETag | 拷贝文件的 MD5 值 | string |
LastModified | 拷贝文件的最后一次修改时间 | string |