
# 复制段
#### 功能说明
初始化分段上传任务后，通过分段上传任务的ID，复制段到指定桶中。
#### 方法定义
```
1. ObsClient->copyPart(array $parameter)
2. ObsClient->copyPartAsync(array $parameter, callable $callback)
```
#### 请求参数
| **字段名**           | **类型**  | **约束** | **说明**                                                                                 |
|:---|:---|:---|:---|
| Bucket            | string  | 必选     | 桶名。                                                                                    |
| Key               | string  | 必选     | 对象名。                                                                                   |
| PartNumber        | integer | 必选     | 段号，取值范围：\[1，10000\]。                                                                   |
| UploadId          | string  | 必选     | 分段上传任务的ID。                                                                             |
| CopySource        | string  | 必选     | 指定源桶、源对象和源对象版本号（可为空）的参数，格式：源桶名/源对象名?versionId=源对象版本号。                                  |
| CopySourceRange   | string  | 可选     | 指定复制源对象的范围，取值区间：\[0，源对象长度-1\]，格式：bytes=x-y。如果CopySourceRange的最大长度超出源对象长度-1，仍然取源对象长度-1。 |
| SseC              | string  | 可选     | 以SSE-C方式加密目标段，支持的值：AES256                                                              |
| SseCKey           | string  | 可选     | SSE-C方式下加密目标段的密钥，该密钥需要您自定义，并由256bit的密钥经过base64编码得到。                                    |
| CopySourceSseC    | string  | 可选     | 以SSE-C方式解密源对象，支持的值：AES256                                                              |
| CopySourceSseCKey | string  | 可选     | SSE-C方式下解密源对象的密钥，由AES256算法算出。                                                          |
   
#### 返回结果
| **字段名**        | **类型**  | **说明**                                                                                                                     |
|:---|:---|:---|
| HttpStatusCode | integer | HTTP状态码。                                                                                                                   |
| Reason         | string  | HTTP文本描述。                                                                                                                  |
| RequestId      | string  | OBS服务端返回的请求ID。                                                                                                             |
| ETag           | string  | 目标段的ETag值。                                                                                                                 |
| LastModified   | string  | 目标段的最近一次修改时间。                                                                                                              |
| SseKms         | string  | SSE-KMS方式的算法。                                                                                                              |
| SseKmsKey      | string  | SSE-KMS加密方式下使用的KMS主密钥的ID值，为空则默认配置为默认密钥。密钥ID获取方法请参见[查看密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0179.html)。 |
| SseC           | string  | SSE-C方式的算法。                                                                                                                |
| SseCKeyMd5     | string  | SSE-C方式的密钥的MD5值。                                                                                                           |
   
#### 代码样例
```
try {
       $resp = $obsClient->copyPart( [ 
              'Bucket' => 'bucketname',
              'Key' => 'objectkey',
              'UploadId' => 'uploadid',
              'PartNumber' => 1,
              'CopySource' => 'sourcebucketname/sourceobjectkey',
              'CopySourceRange' => 'bytes=0-10'
       ] );
       printf ( "RequestId:%s\n", $resp ['RequestId'] );
       printf ( "ETag:%s\n", $resp ['ETag'] );
       printf ( "LastModified:%s\n", $resp ['LastModified'] );
} catch ( Obs\Common\ObsException $obsException ) {
       printf ( "ExceptionCode:%s\n", $obsException->getExceptionCode () );
       printf ( "ExceptionMessage:%s\n", $obsException->getExceptionMessage () );
}
```
