
# 列举已上传的段
#### 功能说明
通过分段上传任务的ID，列举指定桶中已上传的段。
#### 方法定义
```
1. ObsClient->listParts(array $parameter)
2. ObsClient->listPartsAsync(array $parameter, callable $callback)
```
#### 请求参数
| **字段名**          | **类型**  | **约束** | **说明**                                |
|:---|:---|:---|:---|
| Bucket           | string  | 必选     | 桶名。                                   |
| Key              | string  | 必选     | 对象名。                                  |
| UploadId         | string  | 必选     | 分段上传任务的ID。                            |
| MaxParts         | integer | 可选     | 列举已上传段的返回结果最大段数目，即分页时每一页中段数目。         |
| PartNumberMarker | integer | 可选     | 列举已上传段的起始位置，只有Part Number大于该参数的段会被列出。 |
   
#### 返回结果
| **字段名**         || **类型**            | **说明**                                              |
|:--|---|:---|:---|
| HttpStatusCode  || integer           | HTTP状态码。                                            |
| Reason          || string            | HTTP文本描述。                                           |
| RequestId       || string            | OBS服务端返回的请求ID。                                      |
| Bucket          || string            | 桶名。                                                 |
| Key             || string            | 对象名。                                                |
| UploadId        || string            | 分段上传任务的ID。                                          |
| PartNumberMarker || string            | 列举已上传段的起始位置，与请求中的该参数对应。                             |
| NextPartNumberMarker || string            | 下次列举已上传段请求的起始位置。                                    |
| MaxParts        || string            | 列举已上传段的返回结果最大段数目，与请求中的该参数对应。                        |
| IsTruncated     || boolean           | 表明本次请求是否返回了全部结果，"true"表示没有返回全部结果；"false"表示已返回了全部结果。 |
| Parts           || indexed array     | 已上传段列表。                                             |
| - | PartNumber   | integer           | 段号。                                                 |
| - | LastModified | string            | 段的最后上传时间。                                           |
| - | ETag         | string            | 段的ETag值。                                            |
| - | Size         | integer           | 段的大小。                                               |
| Initiator       || associative array | 分段上传任务的创建者。                                         |
| - | ID           | string            | 创建者的DomainId。                                       |
| - | DisplayName  | string            | 创建者的名字。                                             |
| Owner           || associative array | 和Initiator相同，代表分段上传任务的创建者。                          |
| - | ID           | string            | 创建者的DomainId。                                       |
| - | DisplayName  | string            | 创建者的名字。                                             |
| StorageClass    || string            | 待分段上传对象的存储类型。                                       |
   
#### 代码样例
```
try {
       $resp = $obsClient->listParts( [ 
              'Bucket' => 'bucketname',
              'Key' => 'objectkey',
              'UploadId' => 'uploadid',
              'MaxParts' => 10
       ] );
       printf ( "RequestId:%s\n", $resp ['RequestId'] );
       printf ( "Initiator[ID]:%s\n", $resp ['Initiator']['ID'] );
       printf ( "Initiator[DisplayName]:%s\n", $resp ['Initiator']['DisplayName'] );
       foreach ($resp['Parts'] as $index => $part){
              printf("Parts[%d]\n", $index + 1);
              printf ( "PartNumber:%s\n", $part['PartNumber'] );
              printf ( "LastModified:%s\n", $part['LastModified'] );
              printf ( "ETag:%s\n", $part['ETag'] );
              printf ( "Size:%s\n", $part['Size'] );
       }
} catch ( Obs\Common\ObsException $obsException ) {
       printf ( "ExceptionCode:%s\n", $obsException->getExceptionCode () );
       printf ( "ExceptionMessage:%s\n", $obsException->getExceptionMessage () );
}
```
