跳转至

复制对象

函数定义

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)