对象相关接口 返回结果 GetObjectOutput返回的属性如下: 参数 类型 说明 Body io.ReadCloser 对象的数据。 ContentLength int64 对象数据的长度,单位为字节。 ContentType string 数据的标准MIME类型。 ETag string 对象的Entity Tag。 LastModified time.Time 最后修改对象的时间。 TagCount int64 对象标签的数量。 VersionId string 对象的版本ID。 StorageClass string 对象的存储类型。 复制对象 功能说明 复制对象操作用于创建一个已经在对象存储中的对象。复制对象可以拷贝单个最大为5GB的对象,如果需要拷贝更大的对象,可以使用复制段操作。执行复制对象操作,必须具有对被拷贝对象的READ权限和对目标桶的WRITE权限。 拷贝生成的对象默认保留原对象的元数据信息,也可以在复制对象操作中指定新的元数据。拷贝生成的对象不会保留原来的ACL信息,该对象默认是发起复制对象操作的用户私有的。 复制对象操作默认拷贝原对象的当前版本数据,如果需要拷贝原对象的指定版本,可以在复制对象时加入version id来拷贝指定的对象版本,如果原对象的version id为删除标记,则不会被拷贝。如果目标bucket开启了版本控制,那么拷贝生成的对象会有一个与原对象不同的唯一的version id,并且会在响应头部字段 xamzversionid中返回该version id。 代码示例 plaintext func CopyObject(svc s3.S3) { copyObjectInput : &s3.CopyObjectInput{ Bucket: aws.String(" "), CopySource: aws.String(" "), Key: aws.String(" "), } copyObjectOutput, err : svc.CopyObject(copyObjectInput) if err ! nil { fmt.Printf("fail to copy object. %vn", err) } fmt.Println(copyObjectOutput) } 通过CopyObjectRequest操作: CopyObjectRequest操作首先生成一个"request.Request"对象,该对象是一个执行CopyObject操作的请求。通过调用Request对象的Send方法来完成拷贝对象操作。该方法可以生成定制化的请求,例如自定义请求头部请求超时重试设置。 plaintext func CopyObjectRequest(svc s3.S3) { copyObjectInput : &s3.CopyObjectInput{ Bucket: aws.String(" "), CopySource: aws.String(" "), Key: aws.String(" "), } req, copyObjectOutput : svc.CopyObjectRequest(copyObjectInput) err : req.Send() if err ! nil { fmt.Printf("fail to copy object. %vn", err) } else { fmt.Println(copyObjectOutput) } }