
# 列举桶内对象
#### 功能说明
列举桶内对象，默认返回最大1000个对象。
#### 方法定义
```
1. ObsClient->listObjects(array $parameter)
2. ObsClient->listObjectsAsync(array $parameter, callable $callback)
```
#### 请求参数
| **字段名**   | **类型**  | **约束** | **说明**                                                                                                                     |
|:---|:---|:---|:---|
| Bucket    | string  | 必选     | 桶名。                                                                                                                        |
| Prefix    | string  | 可选     | 限定返回的对象名必须带有Prefix前缀。                                                                                                      |
| Marker    | string  | 可选     | 列举对象的起始位置，返回的对象列表将是对象名按照字典序排序后该参数以后的所有对象。                                                                                  |
| MaxKeys   | integer | 可选     | 列举对象的最大数目，取值范围为1\~1000，当超出范围时，按照默认的1000进行处理。                                                                               |
| Delimiter | string  | 可选     | 用于对对象名进行分组的字符。对于对象名中包含Delimiter的对象，其对象名（如果请求中指定了Prefix，则此处的对象名需要去掉Prefix）中从首字符至第一个Delimiter之间的字符串将作为一个分组并作为CommonPrefix返回。 |
   
#### 返回结果
| **字段名**  ||| **类型**            | **说明**                                              |
|:--|---|---|:---|:---|
| HttpStatusCode ||| integer           | HTTP状态码。                                            |
| Reason   ||| string            | HTTP文本描述。                                           |
| RequestId ||| string            | OBS服务端返回的请求ID。                                      |
| Location ||| string            | 桶的区域位置。                                             |
| Name     ||| string            | 桶名。                                                 |
| Delimiter ||| string            | 用于对对象名进行分组的字符，与请求中的该参数对应。                           |
| IsTruncated ||| boolean           | 表明本次请求是否返回了全部结果，"true"表示没有返回全部结果；"false"表示已返回了全部结果。 |
| Prefix   ||| string            | 对象名的前缀，与请求中的该参数对应。                                  |
| Marker   ||| string            | 列举对象的起始位置，与请求中的该参数对应。                               |
| NextMarker ||| string            | 下次列举对象时请求的起始位置。                                     |
| MaxKeys  ||| integer           | 列举对象的最大数目，与请求中的该参数对应。                               |
| Contents ||| indexed array     | 对象列表。                                               |
| - | ETag  || string            | 对象的MD5值（当对象是服务端加密的对象时，ETag值不是对象的MD5值）。              |
| - | Size  || integer           | 对象的字节数。                                             |
| - | Key   || string            | 对象名。                                                |
| - | LastModified || string            | 对象最近一次被修改的时间。                                       |
| - | Owner || associative array | 对象的所有者。                                             |
| - | - | ID | string            | 对象所有者的DomainId。                                     |
| - | StorageClass || string            | 对象的存储类型。                                            |
| CommonPrefixes ||| indexed array     | 当请求中设置了Delimiter分组字符时，返回按Delimiter分组后的对象名称前缀列表。     |
| - | Prefix || string            | 按Delimiter分组后的对象名称前缀。                               |
   
#### 代码样例
```
try{
       $resp = $obsClient -> listObjects([
              'Bucket' => 'bucketname',
              'Prefix' => 'prefix',
              'MaxKeys' => 100
       ]);
       printf("RequestId:%s\n", $resp['RequestId']);
       foreach ($resp['Contents'] as $index => $content){
              printf("Contents[%d]\n", $index + 1);
              printf("ETag:%s\n", $content['ETag']);
              printf("Size:%s\n", $content['Size']);
              printf("StorageClass:%s\n", $content['StorageClass']);
              printf("Key:%s\n", $content['Key']);
              printf("LastModified:%s\n", $content['LastModified']);
              printf("Owner[ID]:%s\n", $content['Owner']['ID']);
       }
}catch (Obs\Common\ObsException $obsException){
       printf("ExceptionCode:%s\n", $obsException->getExceptionCode());              
       printf("ExceptionMessage:%s\n", $obsException->getExceptionMessage());
}
```
