桶 API

本章介绍桶相关的接口。

GET Service

查询用户创建的所有存储桶。

请求语法

  1. GET / HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

结果解析

查询结果以XML形式在响应消息体中显示。

—ListAllMyBucketsResult

容器,包含Owner和Buckets

—Owner

存储桶所有者。

容器,包含ID和DisplayName。

属于:ListAllMyBucketsResult

—ID

存储桶所有者的ID。

继承:ListAllMyBucketsResult.Owner

—DisplayName

存储桶所有者的名称。

属于:ListAllMyBucketsResult.Owner

—Buckets

桶列表。

容器,包含若干Bucket。

属于:ListAllMyBucketsResult

—Bucket

存储桶。

容器,包含Name和CreationDate。

属于:ListAllMyBucketsResult.Buckets

—Name

存储桶名称。

属于:ListAllMyBucketsResult.Buckets.Bucket

—CreationDate

存储桶创建时间。

属于:ListAllMyBucketsResult.Buckets.Bucket

样例

响应结果

  1. <ListAllMyBucketsResult>
  2. <Owner>
  3. <DisplayName>username</DisplayName>
  4. <ID>34455</ID>
  5. </Owner>
  6. <Buckets>
  7. <Bucket>
  8. <Name>mybucket</Name>
  9. <CreationDate>2019-02-03T16:45:09.000Z</CreationDate>
  10. </Bucket>
  11. <Bucket>
  12. <Name>samples</Name>
  13. <CreationDate>2019-02-03T16:41:58.000Z</CreationDate>
  14. </Bucket>
  15. </Buckets>
  16. </ListAllMyBucketsResult>

PUT Bucket

创建存储桶,存储桶名需在整个系统内唯一,长度在3-63之间。

请求元素

在请求消息体中使用XML形式指定存储桶创建的区域,如果不指定,则存储桶创建在默认的区域上。

—CreateBucketConfiguration

容器,包含LocationConstraint

—LocationConstraint

指定创建存储桶的区域。

类型: String

请求语法

  1. PUT /bucketname HTTP/1.1
  2. Host: ip:port
  3. Content-Length: length
  4. Date: date
  5. Authorization: authorization string
  6.  
  7. <CreateBucketConfiguration>
  8. <LocationConstraint>Region</LocationConstraint>
  9. </CreateBucketConfiguration>

样例

响应结果

  1. HTTP/1.1 200 OK
  2. Location: /bucketName
  3. Content-Length: 0
  4. Date: Fri, 16 Aug 2019 11:11:53 GMT

DELETE Bucket

删除存储桶。

请求语法

  1. DELETE /bucketname HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

样例

响应结果

  1. HTTP/1.1 204 No Content
  2. Date: Fri, 16 Aug 2019 10:11:53 GMT

HEAD Bucket

检查一个存储桶是否存在。

请求语法

  1. HEAD /bucketname HTTP/1.1
  2. Date: date
  3. Authorization: authorization string
  4. Host: ip:port

样例

响应结果

  1. HTTP/1.1 200 OK
  2. Date: Fri, 16 Aug 2019 10:10:53 GMT

PUT Bucket versioning

修改存储桶的版本控制状态。

参数说明

—versioning

表示该请求为修改存储桶的版本控制状态。

请求元素

在请求消息体中使用XML形式指定存储桶的版本控制状态。

—VersioningConfiguration

容器,包含Status

—Status

版本控制状态。

有效值:Suspended|Enabled

属于:VersioningConfiguration

请求语法

  1. PUT /bucketname?versioning HTTP/1.1
  2. Host: ip:port
  3. Content-Length: length
  4. Date: date
  5. Authorization: authorization string
  6.  
  7. <VersioningConfiguration>
  8. <Status>VersioningState</Status>
  9. </VersioningConfiguration>

样例

响应结果

  1. HTTP/1.1 200 OK
  2. Date: Wed, 01 Mar 2006 12:00:00 GMT

GET Bucket versioning

查询桶的版本控制状态。

请求语法

  1. GET /bucketname?versioning HTTP/1.1
  2. Host: ip:port
  3. Content-Length: length
  4. Date: date
  5. Authorization: authorization string

结果解析

查询结果以XML形式在响应消息头中显示。

—VersioningConfiguration

容器,包含Status

—Status

版本控制状态。

有效值:Suspended|Enabled

属于:VersioningConfiguration

样例

样例1:打开版本控制开关,查询结果如下:

  1. <VersioningConfiguration>
  2. <Status>Enabled</Status>
  3. </VersioningConfiguration>

样例2:禁用版本控制,查询结果如下:

  1. <VersioningConfiguration>
  2. <Status>Suspended</Status>
  3. </VersioningConfiguration>

样例3:从未开启或禁用过版本控制,查询结果如下:

  1. <VersioningConfiguration/>

GET Bucket location

查询桶所在的区域。

请求语法

  1. GET /bucketname?location HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

结果解析

查询结果以XML格式在响应消息体中显示。

—LocationConstraint

桶所在的区域。

样例

样例1:已经配置了区域的存储桶,查询结果如下:

  1. <LocationConstraint>region</LocationConstraint>

样例2:未配置区域的存储桶,查询结果如下:

  1. <LocationConstraint/>

GET Bucket (List Objects) Version 1

查询存储桶内对象列表。

请求语法

  1. GET /bucketname HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

请求参数

—prefix

前缀,返回具有前缀的对象列表。

类型:String

—delimiter

分隔符,如果指定prefix,则prefix后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个CommonPrefixes。如果未指定 prefix参数,则子字符串从对象名称的开头开始。

类型:String

—marker

指定在存储桶中列出对象要开始的键,返回对象键按照UTF-8二进制顺序从该标记后的键开始按顺序排列。

类型:String

—max-keys

设置响应中返回的最大键数。默认值1000,如果要查询返回数量少于1000,可以填写其他值,填写超过1000的值,仍然按照1000条返回。

类型:String

—encoding-type

响应结果编码类型,只支持url。由于对象名称可以包含任意字符,但是XML对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码。

结果解析

查询结果以XML形式在响应消息体中显示。

—ListBucketResult

容器,包含存储桶信息,查询条件和查询的对象信息。

—Name

存储桶名称。

—Prefix

查询的prefix条件。

—Delimiter

查询的delimiter条件。

—Marker

查询的marker条件。

—MaxKeys

查询的maxKeys条件。

—Encoding-Type

查询的encoding-type条件。

—IsTruncated

如果该字段为true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用NextMarker作为下一次查询的Marker条件继续查询剩余内容。

—NextMarker

当IsTruncated为true时,该字段返回的是本次查询的最后一条的记录。

—CommonPrefixes

当查询条件指定了Delimter时,Prefix后面第一次出现Delimiter的位置(包括Delimiter)之前的内容作为CommonPrefix,当有多个对象具有相同的CommonPrefix时,只返回一条CommonPrefix,计数1次,对象信息不返回。

—Prefix

CommonPrefix包含的前缀。

属于:ListBucketResult.CommonPrefixes

—Contents

容器,包含对象的元数据。

—Key

对象的名称。

属于:ListBucketResult.Contents

—LastModified

创建对象的时间。

属于:ListBucketResult.Contents

—ETag

对象的MD5值。

属于:ListBucketResult.Contents

—Size

对象的大小,单位:字节。

属于:ListBucketResult.Contents

—Owner

存储桶的所有者。

属于:ListBucketResult.Contents

—ID

存储桶所有者的ID

属于:ListBucketResult.Contents.Owner

—DisplayName

桶所有者的名字。

属于:ListBucketResult.Contents.Owner

样例

样例1:本次请求不携带查询条件,查询存储桶内所有记录。

  1. GET /bucketname HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

查询结果:

  1. <ListBucketResult>
  2. <Name>bucketname</Name>
  3. <Prefix/>
  4. <Marker/>
  5. <MaxKeys>1000</MaxKeys>
  6. <IsTruncated>false</IsTruncated>
  7. <Contents>
  8. <Key>my-image.jpg</Key>
  9. <LastModified>2019-08-12T17:50:30.000Z</LastModified>
  10. <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag>
  11. <Size>434234</Size>
  12. <Owner>
  13. <ID>125664</ID>
  14. <DisplayName>username</DisplayName>
  15. </Owner>
  16. </Contents>
  17. <Contents>
  18. <Key>my-third-image.jpg</Key>
  19. <LastModified>2019-08-12T17:51:30.000Z</LastModified>
  20. <ETag>&quot;1b2cf535f27731c974343645a3985328&quot;</ETag>
  21. <Size>64994</Size>
  22. <Owner>
  23. <ID>125664</ID>
  24. <DisplayName>username</DisplayName>
  25. </Owner>
  26. </Contents>
  27. </ListBucketResult>

样例2:本次请求指定prefix为N,起始位置为Ned,并只返回100条记录

  1. GET /mybucket?prefix=N&marker=Ned&max-keys=100 HTTP/1.1
  2. Host: iP:port
  3. Date: date
  4. Authorization: authorization string

查询结果:

  1. <ListBucketResult>
  2. <Name>mybucket</Name>
  3. <Prefix>N</Prefix>
  4. <Marker>Ned</Marker>
  5. <MaxKeys>100</MaxKeys>
  6. <IsTruncated>false</IsTruncated>
  7. <Contents>
  8. <Key>Nelson</Key>
  9. <LastModified>2019-08-12T12:00:00.000Z</LastModified>
  10. <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag>
  11. <Size>5</Size>
  12. <Owner>
  13. <ID>125664</ID>
  14. <DisplayName>username</DisplayName>
  15. </Owner>
  16. </Contents>
  17. <Contents>
  18. <Key>Neo</Key>
  19. <LastModified>2019-08-12T12:01:00.000Z</LastModified>
  20. <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag>
  21. <Size>4</Size>
  22. <Owner>
  23. <ID>125664</ID>
  24. <DisplayName>username</DisplayName>
  25. </Owner>
  26. </Contents>
  27. </ListBucketResult>

样例3:桶内已经有如下对象

  1. sample.jpg
  2. photos/2006/January/sample.jpg
  3. photos/2006/February/sample2.jpg
  4. photos/2006/February/sample3.jpg
  5. photos/2006/February/sample4.jpg

本次请求携带分隔符/

  1. GET /mybucket-2?delimiter=/ HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

查询结果:

  1. <ListBucketResult>
  2. <Name>mybucket-2</Name>
  3. <Prefix/>
  4. <Marker/>
  5. <MaxKeys>1000</MaxKeys>
  6. <Delimiter>/</Delimiter>
  7. <IsTruncated>false</IsTruncated>
  8. <Contents>
  9. <Key>sample.jpg</Key>
  10. <LastModified>2019-08-12T12:01:00.000Z</LastModified>
  11. <ETag>&quot;bf1d737a4d46a19f3bced6905cc8b902&quot;</ETag>
  12. <Size>142863</Size>
  13. <Owner>
  14. <ID>canonical-user-id</ID>
  15. <DisplayName>display-name</DisplayName>
  16. </Owner>
  17. </Contents>
  18. <CommonPrefixes>
  19. <Prefix>photos/</Prefix>
  20. </CommonPrefixes>
  21. </ListBucketResult>

GET Bucket (List Objects) Version 2

查询桶内对象列表。

请求语法

  1. GET /bucketname?list-type=2 HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

请求参数

—list-type

固定设置为2,List Objects的第二个版本。

—prefix

前缀,返回具有前缀的对象列表。

类型:String

—delimiter

分隔符,如果指定prefix,则prefix后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个CommonPrefixes。如果未指定 prefix参数,则子字符串从对象名称的开头开始。

类型:String

—start-after

指定在存储桶中列出对象要开始的键,返回对象键按照UTF-8二进制顺序从该标记后的键开始按顺序排列。

类型:String

—max-keys

设置响应中返回的最大键数。默认值1000,如果要查询返回数量少于1000,可以填写其他值,填写超过1000的值,仍然按照1000条返回。

类型:String

—encoding-type

响应结果编码类型,只支持url。由于对象名称可以包含任意字符,但是XML对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码。

—continuation-token

当响应结果被截断,还有部分未返回时,响应结果中会包含NextContinuationToken,要列出下一组对象,可以使用NextContinuationToken下一个请求中的 元素作为continuation-token。

—fetch-owner

默认情况下,结果中不会反悔Owner信息,如果要在响应中包含Owner信息,将该参数置为true。

结果解析

查询结果以XML形式在响应消息体中显示。

—ListBucketResult

容器,包含存储桶信息,查询条件和查询的对象信息。

—Name

存储桶名称。

—Prefix

查询的prefix条件。

—Delimiter

查询的delimiter条件。

—StartAfter

查询的start-after条件。

—ContinuationToken

查询的continuation-token条件

—MaxKeys

查询的maxKeys条件。

—Encoding-Type

查询的encoding-type条件。

—KeyCount

本次查询返回的记录数。

—IsTruncated

如果该字段为true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用NextMarker作为下一次查询的Marker条件继续查询剩余内容。

—NextContinuationToken

当IsTruncated为true时,NextContinuationToken记录位置,下一次请求在continuation-token携带该令牌继续查询下一组记录。

—CommonPrefixes

当查询条件指定了Delimter时,Prefix后面第一次出现Delimiter的位置(包括Delimiter)之前的内容作为CommonPrefix,当有多个对象具有相同的CommonPrefix时,只返回一条CommonPrefix,计数1次,对象信息不返回。

—Prefix

CommonPrefix包含的前缀。

属于:ListBucketResult.CommonPrefixes

—Contents

容器,包含对象的元数据。

—Key

对象的名称。

属于:ListBucketResult.Contents

—LastModified

创建对象的时间。

属于:ListBucketResult.Contents

—ETag

对象的MD5值。

属于:ListBucketResult.Contents

—Size

对象的大小,单位:字节。

属于:ListBucketResult.Contents

—Owner

存储桶的所有者。

属于:ListBucketResult.Contents

—ID

存储桶所有者的ID

属于:ListBucketResult.Contents.Owner

—DisplayName

桶所有者的名字。

属于:ListBucketResult.Contents.Owner

样例

样例1:本次请求不携带查询条件,查询存储桶内所有记录。

  1. GET /bucketname?list-type=2 HTTP/1.1
  2. Host: ip:port
  3. Date: Sat, 17 Aug 2019 17:51:00 GMT
  4. Authorization: authorization string

查询结果:

  1. <ListBucketResult>
  2. <Name>bucketname</Name>
  3. <Prefix/>
  4. <Marker/>
  5. <KeyCount>205</KeyCount>
  6. <MaxKeys>1000</MaxKeys>
  7. <IsTruncated>false</IsTruncated>
  8. <Contents>
  9. <Key>my-image.jpg</Key>
  10. <LastModified>2019-08-12T17:50:30.000Z</LastModified>
  11. <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag>
  12. <Size>434234</Size>
  13. <Owner>
  14. <ID>125664</ID>
  15. <DisplayName>username</DisplayName>
  16. </Owner>
  17. </Contents>
  18. <Contents>
  19. ...
  20. </Contents>
  21. ...
  22. </ListBucketResult>

样例2:本次请求指定prefix为N,起始位置为Ned,并只返回100条记录

  1. GET /mybucket?list-type=2&prefix=N&start-after=Ned&max-keys=100 HTTP/1.1
  2. Host: iP:port
  3. Date: Sat, 17 Aug 2019 17:45:00 GMT
  4. Authorization: authorization string

查询结果,实际查询到两条符合条件的记录:

  1. <ListBucketResult>
  2. <Name>mybucket</Name>
  3. <Prefix>N</Prefix>
  4. <Marker>Ned</Marker>
  5. <KeyCount>2</KeyCount>
  6. <MaxKeys>100</MaxKeys>
  7. <IsTruncated>false</IsTruncated>
  8. <Contents>
  9. <Key>Nelson</Key>
  10. <LastModified>2019-08-12T12:00:00.000Z</LastModified>
  11. <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag>
  12. <Size>5</Size>
  13. <Owner>
  14. <ID>125664</ID>
  15. <DisplayName>username</DisplayName>
  16. </Owner>
  17. </Contents>
  18. <Contents>
  19. <Key>Neo</Key>
  20. <LastModified>2019-08-12T12:01:00.000Z</LastModified>
  21. <ETag>&quot;828ef3fdfa96f00ad9f27c383fc9ac7f&quot;</ETag>
  22. <Size>4</Size>
  23. <Owner>
  24. <ID>125664</ID>
  25. <DisplayName>username</DisplayName>
  26. </Owner>
  27. </Contents>
  28. </ListBucketResult>

样例3:桶内已经有如下对象

  1. sample.jpg
  2. photos/2006/January/sample.jpg
  3. photos/2006/February/sample2.jpg
  4. photos/2006/February/sample3.jpg
  5. photos/2006/February/sample4.jpg

本次请求携带分隔符/

  1. GET /mybucket-2?list-type=2&delimiter=/ HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

查询结果:

  1. <ListBucketResult>
  2. <Name>mybucket-2</Name>
  3. <Prefix/>
  4. <Marker/>
  5. <KeyCount>2</KeyCount>
  6. <MaxKeys>1000</MaxKeys>
  7. <Delimiter>/</Delimiter>
  8. <IsTruncated>false</IsTruncated>
  9. <Contents>
  10. <Key>sample.jpg</Key>
  11. <LastModified>2019-08-12T12:01:00.000Z</LastModified>
  12. <ETag>&quot;bf1d737a4d46a19f3bced6905cc8b902&quot;</ETag>
  13. <Size>142863</Size>
  14. <Owner>
  15. <ID>canonical-user-id</ID>
  16. <DisplayName>display-name</DisplayName>
  17. </Owner>
  18. </Contents>
  19. <CommonPrefixes>
  20. <Prefix>photos/</Prefix>
  21. </CommonPrefixes>
  22. </ListBucketResult>

GET Bucket Object versions

查询桶内对象的所有版本。

请求语法

  1. GET /bucketname?versions HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

请求参数

—prefix

前缀,返回具有前缀的对象列表。

类型:String

—delimiter

分隔符,如果指定prefix,则prefix后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个CommonPrefixes。如果未指定 prefix参数,则子字符串从对象名称的开头开始。

类型:String

—key-marker

指定在存储桶中列出对象要开始的键,返回对象键按照UTF-8二进制顺序从该标记后的键开始按顺序排列。

类型:String

—version-id-marker

指定起始位置的version,仅在指定了key-marker的情况下有效。

—max-keys

设置响应中返回的最大键数。默认值1000,如果要查询返回数量少于1000,可以填写其他值,填写超过1000的值,仍然按照1000条返回。

类型:String

—encoding-type

响应结果编码类型,只支持url。由于对象名称可以包含任意字符,但是XML对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码。

结果解析

查询结果以XML形式在响应消息体中显示。

—ListVersionsResult

容器,包含存储桶信息,查询条件和查询的对象版本信息。

—Name

存储桶名称。

—Prefix

查询的prefix条件。

—Delimiter

查询的delimiter条件。

—KeyMarker

查询的key-marker条件。

—VersionIDMarker

查询的version-id-marker条件

—MaxKeys

查询的maxKeys条件。

—Encoding-Type

查询的encoding-type条件。

—IsTruncated

如果该字段为true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用NextMarker作为下一次查询的Marker条件继续查询剩余内容。

—NextKeyMarker

当IsTruncated为true时,NextKeyMarker记录本次返回的最后一个对象或者CommonPrefix。

—NextVersionIdMarker

当IsTruncated为true时,NextVersionIdMarker记录本次返回的最后一条记录的version。

—CommonPrefixes

当查询条件指定了Delimter时,Prefix后面第一次出现Delimiter的位置(包括Delimiter)之前的内容作为CommonPrefix,当有多个对象具有相同的CommonPrefix时,只返回一条CommonPrefix,计数1次,对象信息不返回。

—Prefix

CommonPrefix包含的前缀。

属于:ListVersionsResult.CommonPrefixes

—Version

容器,包含对象版本的元数据。

—DeleteMarker

容器,包含删除标记。

—Key

对象的名称。

属于:ListVersionsResult.Version | ListVersionsResult.DeleteMarker

—VersionId

对象的版本号。

属于:ListVersionsResult.Version | ListVersionsResult.DeleteMarker

—IsLatest

是否是最新版本。

属于:ListVersionsResult.Version | ListVersionsResult.DeleteMarker

—LastModified

创建对象的时间。

属于:ListVersionsResult.Version | ListVersionsResult.DeleteMarker

—ETag

对象的MD5值。

属于:ListVersionsResult.Version

—Size

对象的大小,单位:字节。

属于:ListVersionsResult.Version

—Owner

存储桶的所有者。

属于:ListVersionsResult.Version | ListVersionsResult.DeleteMarker

—ID

存储桶所有者的ID

属于:ListVersionsResult.Version.Owner | ListVersionsResult.DeleteMarker.Owner

—DisplayName

桶所有者的名字。

属于:ListVersionsResult.Version.Owner | ListVersionsResult.DeleteMarker.Owner

样例

样例1:查询存储桶内所有版本

  1. GET /bucketname?versions HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

查询结果:

  1. <ListVersionsResult>
  2. <Name>bucket</Name>
  3. <Prefix>my</Prefix>
  4. <KeyMarker/>
  5. <VersionIdMarker/>
  6. <MaxKeys>1000</MaxKeys>
  7. <IsTruncated>false</IsTruncated>
  8. <Version>
  9. <Key>my-image.jpg</Key>
  10. <VersionId>234</VersionId>
  11. <IsLatest>true</IsLatest>
  12. <LastModified>2019-08-16T17:50:32.000Z</LastModified>
  13. <ETag>&quot;fba9dede5f27731c9771645a39863328&quot;</ETag>
  14. <Size>434234</Size>
  15. <Owner>
  16. <ID>125664</ID>
  17. <DisplayName>username</DisplayName>
  18. </Owner>
  19. </Version>
  20. <DeleteMarker>
  21. <Key>my-second-image.jpg</Key>
  22. <VersionId>55566666</VersionId>
  23. <IsLatest>true</IsLatest>
  24. <LastModified>2019-08-16T17:50:31.000Z</LastModified>
  25. <Owner>
  26. <ID>125664</ID>
  27. <DisplayName>username</DisplayName>
  28. </Owner>
  29. </DeleteMarker>
  30. <Version>
  31. <Key>my-second-image.jpg</Key>
  32. <VersionId>45667</VersionId>
  33. <IsLatest>false</IsLatest>
  34. <LastModified>2019-08-16T17:50:30.000Z</LastModified>
  35. <ETag>&quot;9b2cf535f27731c974343645a3985328&quot;</ETag>
  36. <Size>166434</Size>
  37. <Owner>
  38. <ID>125664</ID>
  39. <DisplayName>username</DisplayName>
  40. </Owner>
  41. </Version>
  42. </ListVersionsResult>

样例2:携带分隔符/进行查询

请求样例:

  1. GET /mybucket-2?versions&delimiter=/ HTTP/1.1
  2. Host: ip:port
  3. Date: date
  4. Authorization: authorization string

响应结果:

  1. <ListVersionsResult>
  2. <Name>mvbucketwithversionon1</Name>
  3. <Prefix/>
  4. <KeyMarker/>
  5. <VersionIdMarker/>
  6. <MaxKeys>1000</MaxKeys>
  7. <Delimiter>/</Delimiter>
  8. <IsTruncated>false</IsTruncated>
  9. <Version>
  10. <Key>Sample.jpg</Key>
  11. <VersionId>toxMzQlBsGyGCz1YuMWMp90cdXLzqOCH</VersionId>
  12. <IsLatest>true</IsLatest>
  13. <LastModified>2019-02-02T18:46:20.000Z</LastModified>
  14. <ETag>&quot;3305f2cfc46c0f04559748bb039d69ae&quot;</ETag>
  15. <Size>3191</Size>
  16. <Owner>
  17. <ID>125664</ID>
  18. <DisplayName>username</DisplayName>
  19. </Owner>
  20. </Version>
  21. <CommonPrefixes>
  22. <Prefix>photos/</Prefix>
  23. </CommonPrefixes>
  24. <CommonPrefixes>
  25. <Prefix>videos/</Prefix>
  26. </CommonPrefixes>
  27. </ListVersionsResult>

List Multipart Uploads

查询桶内所有已初始化未完成的分段上传请求。

请求语法

  1. GET /bucketname?uploads HTTP/1.1
  2. Host: ip:port
  3. Date: Date
  4. Authorization: authorization string

请求参数

—prefix

前缀,返回具有前缀的对象列表。

类型:String

—delimiter

分隔符,如果指定prefix,则prefix后第一次出现的分隔符之间包含相同字符串的所有键都被分组在一个CommonPrefixes。如果未指定 prefix参数,则子字符串从对象名称的开头开始。

类型:String

—key-marker

指定在存储桶中列出对象要开始的键,返回对象键按照UTF-8二进制顺序从该标记后的键开始按顺序排列。

类型:String

—upload-id-marker

指定起始位置的uploadId,仅在指定了key-marker的情况下有效。

—max-uploads

设置响应中返回的最大键数。默认值1000,如果要查询返回数量少于1000,可以填写其他值,填写超过1000的值,仍然按照1000条返回。

类型:String

—encoding-type

对响应内容进行的编码方法,只支持url。由于对象名称可以包含任意字符,但是XML对某些特别的字符无法解析,所以需要对响应中的对象名称进行编码。

结果解析

查询结果在响应消息体中以XML形式体现

—ListMultipartUploadsResult

容器,包含桶信息,查询条件和未完成的分段上传信息。

—Bucket

存储桶名称。

—Prefix

查询的prefix条件。

—Delimiter

查询的delimiter条件。

—KeyMarker

查询的key-marker条件。

—UploadIdMarker

查询的upload-id-marker条件

—MaxUploads

查询的maxUploads条件。

—Encoding-Type

查询的encoding-type条件。

—IsTruncated

如果该字段为true,说明由于条数限制,本次没有查询完所有符合条件的结果,可以使用NextMarker作为下一次查询的Marker条件继续查询剩余内容。

—NextKeyMarker

当IsTruncated为true时,NextKeyMarker记录本次返回的最后一个对象或者CommonPrefix。

—NextUploadIdMarker

当IsTruncated为true时,NextUploadIdMarker记录本次返回的最后一条记录的uploadId。

—CommonPrefixes

当查询条件指定了Delimter时,Prefix后面第一次出现Delimiter的位置(包括Delimiter)之前的内容作为CommonPrefix,当有多个对象具有相同的CommonPrefix时,只返回一条CommonPrefix,计数1次,对象信息不返回。

—Prefix

CommonPrefix包含的前缀。

属于:ListMultipartUploadsResult.CommonPrefixes

—Upload

容器,包含分段上传信息。

—Key

对象的名称。

属于:ListMultipartUploadsResult.Upload

—UploadId

分段上传的uploadId。

属于:ListMultipartUploadsResult.Upload

—Initiated

分段上传的的初始化时间。

属于:ListMultipartUploadsResult.Upload

—Owner

存储桶的所有者。

属于:ListMultipartUploadsResult.Upload

—ID

存储桶所有者的ID

属于:ListMultipartUploadsResult.Upload.Owner | ListMultipartUploadsResult.Upload.Initiated

—DisplayName

桶所有者的名字。

属于:ListMultipartUploadsResult.Upload.Owner |ListMultipartUploadsResult.Upload.Initiated

样例

查询uploads,携带分隔符/

  1. GET /example-bucket?uploads&delimiter=/ HTTP/1.1
  2. Host: ip:port
  3. Date: Sat, 17 Aug 2019 20:34:56 GMT
  4. Authorization: authorization string

查询结果

  1. <ListMultipartUploadsResult>
  2. <Bucket>example-bucket</Bucket>
  3. <KeyMarker/>
  4. <UploadIdMarker/>
  5. <NextKeyMarker>sample.jpg</NextKeyMarker>
  6. <NextUploadIdMarker>4444</NextUploadIdMarker>
  7. <Delimiter>/</Delimiter>
  8. <Prefix/>
  9. <MaxUploads>1000</MaxUploads>
  10. <IsTruncated>false</IsTruncated>
  11. <Upload>
  12. <Key>sample.jpg</Key>
  13. <UploadId>4444</UploadId>
  14. <Initiator>
  15. <ID>2234</ID>
  16. <DisplayName>s3-nickname</DisplayName>
  17. </Initiator>
  18. <Owner>
  19. <ID>2234</ID>
  20. <DisplayName>s3-nickname</DisplayName>
  21. </Owner>
  22. <Initiated>2019-08-16T19:24:17.000Z</Initiated>
  23. </Upload>
  24. <CommonPrefixes>
  25. <Prefix>photos/</Prefix>
  26. </CommonPrefixes>
  27. <CommonPrefixes>
  28. <Prefix>videos/</Prefix>
  29. </CommonPrefixes>
  30. </ListMultipartUploadsResult>