
# 合并段
#### 功能说明
通过分段上传任务的ID，合并指定桶中已上传的段。
#### 方法定义
```
1. ObsClient->completeMultipartUpload(array $parameter)
2. ObsClient->completeMultipartUploadAsync(array $parameter, callable $callback)
```
#### 请求参数
| **字段名**       || **类型**        | **约束** | **说明**     |
|:--|---|:---|:---|:---|
| Bucket        || string        | 必选     | 桶名。        |
| Key           || string        | 必选     | 对象名。       |
| UploadId      || string        | 必选     | 分段上传任务的ID。 |
| Parts         || indexed array | 必选     | 合并的段列表。    |
| - | PartNumber | integer       | 必选     | 段号。        |
| - | ETag       | string        | 必选     | 段的ETag值。   |
   
#### 返回结果
| **字段名**        | **类型**  | **说明**                                                                                                                     |
|:---|:---|:---|
| HttpStatusCode | integer | HTTP状态码。                                                                                                                   |
| Reason         | string  | HTTP文本描述。                                                                                                                  |
| RequestId      | string  | OBS服务端返回的请求ID。                                                                                                             |
| ETag           | string  | 合并段后根据各个段的ETag值计算出的结果。                                                                                                     |
| Bucket         | string  | 合并段所在的桶。                                                                                                                   |
| Key            | string  | 合并段后得到的对象名。                                                                                                                |
| Location       | string  | 合并段后得到的对象的url。                                                                                                             |
| VersionId      | 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->completeMultipartUpload( [ 
              'Bucket' => 'bucketname',
              'Key' => 'objectkey',
              'UploadId' => 'uploadid',
              'Parts' => [
                     ['PartNumber' => 1, 'ETag' => 'etag1'], 
                     ['PartNumber' => 2, 'ETag' => 'etag2']
              ]
       ] );
       printf ( "RequestId:%s\n", $resp ['RequestId'] );
       printf ( "Bucket:%s\n", $resp ['Bucket'] );
       printf ( "Key:%s\n", $resp ['Key'] );
       printf ( "ETag:%s\n", $resp ['ETag'] );
} catch ( Obs\Common\ObsException $obsException ) {
       printf ( "ExceptionCode:%s\n", $obsException->getExceptionCode () );
       printf ( "ExceptionMessage:%s\n", $obsException->getExceptionMessage () );
}
```
