复制对象
函数定义¶
CopyObject(ctx context.Context, dst CopyDestOptions, src CopySrcOptions) (UploadInfo, error)
通过对现有对象进行服务器端复制来创建或替换对象。它支持条件复制、复制对象的一部分以及目标端的服务器端加密和源端的解密。有关详细信息,请参阅 CopySrcOptions 和 DestinationInfo 类型。
要将多个源对象复制到单个目标对象,请使用 ComposeObject API。
参数¶
参数 | 类型 | 描述 |
---|---|---|
ctx | context.Context | 自定义上下文,用于超时或取消调用 |
dst | minio.CopyDestOptions | 描述目标对象的参数 |
src | minio.CopySrcOptions | 描述源对象的参数 |
minio.UploadInfo¶
参数 | 类型 | 描述 |
---|---|---|
info.ETag | string | 新对象的 ETag |
info.VersionID | string | 新对象的版本标识符 |
示例¶
// Use-case 1: Simple copy object with no conditions.
// Source object
srcOpts := minio.CopySrcOptions{
Bucket: "my-sourcebucketname",
Object: "my-sourceobjectname",
}
// Destination object
dstOpts := minio.CopyDestOptions{
Bucket: "my-bucketname",
Object: "my-objectname",
}
// Copy object call
uploadInfo, err := minioClient.CopyObject(context.Background(), dst, src)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Successfully copied object:", uploadInfo)
// 用例 2:
// 复制对象并使用复制条件,仅复制源对象的一部分。
// 1. 匹配给定的 ETag
// 2. 并且在 2014 年 4 月 1 日之后修改
// 3. 但从 2014 年 4 月 23 日起未修改
// 4. 仅复制对象的前 1MiB。
// Source object
srcOpts := minio.CopySrcOptions{
Bucket: "my-sourcebucketname",
Object: "my-sourceobjectname",
MatchETag: "31624deb84149d2f8ef9c385918b653a",
MatchModifiedSince: time.Date(2014, time.April, 1, 0, 0, 0, 0, time.UTC),
MatchUnmodifiedSince: time.Date(2014, time.April, 23, 0, 0, 0, 0, time.UTC),
Start: 0,
End: 1024*1024-1,
}
// Destination object
dstOpts := minio.CopyDestOptions{
Bucket: "my-bucketname",
Object: "my-objectname",
}
// Copy object call
_, err = minioClient.CopyObject(context.Background(), dst, src)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Successfully copied object:", uploadInfo)