开发者社区 问答 正文

OSS如何实现查看对象列表?

查看对象列表即列出您在Bucket中上传的文件(Object),您可以通过OSS的接口调用一次性得到某一Bucket下最多1000个的Object列表。通过下面的四个参数,您可以完成多种拓展功能:

名称作用
Delimiter用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现Delimiter字符之间的Object作为一组元素: CommonPrefixes。
Marker设定结果从Marker之后按字母排序的第一个开始返回。
MaxKeys限定此次返回Object的最大数,如果不设定,默认为100,MaxKeys取值不能大于1000。
Prefix限定返回的Object key必须以Prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含Prefix。


文件夹模拟功能


OSS服务是没有文件夹这个概念的,所有元素都是以Object来存储。创建模拟文件夹本质上来说是创建了一个size为0的Object。对于这个Object照样可以上传下载,只是控制台会对以“/”结尾的Object以文件夹的方式展示。所以您可以使用上述方式来实现创建模拟文件夹。
您可以通过 Delimiter 和 Prefix 参数的配合模拟出文件夹功能。Delimiter 和 Prefix 的组合效果是这样的:
  • 如果把 Prefix 设为某个文件夹名,就可以罗列以此 Prefix 开头的文件,即该文件夹下递归的所有的文件和子文件夹(目录)。文件名在Contents中显示。
  • 如果再把 Delimiter 设置为 “/” 时,返回值就只罗列该文件夹下的文件和子文件夹(目录),该文件夹下的子文件名(目录)返回在 CommonPrefixes 部分,子文件夹下递归的文件和文件夹不被显示。
  1. [backcolor=transparent]举个例子:
  2. [backcolor=transparent]假如在[backcolor=transparent]OSS[backcolor=transparent][backcolor=transparent]Bucket[backcolor=transparent][backcolor=transparent]oss[backcolor=transparent]-[backcolor=transparent]sample[backcolor=transparent]下有如下[backcolor=transparent]Object[backcolor=transparent]
  3. [backcolor=transparent]文件[backcolor=transparent]D
  4. [backcolor=transparent]目录[backcolor=transparent]A[backcolor=transparent]/文件[backcolor=transparent]C
  5. [backcolor=transparent]目录[backcolor=transparent]A[backcolor=transparent]/文件[backcolor=transparent]D
  6. [backcolor=transparent]目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]B[backcolor=transparent]/文件[backcolor=transparent]B
  7. [backcolor=transparent]目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]B[backcolor=transparent]/目录[backcolor=transparent]C[backcolor=transparent]/文件[backcolor=transparent]A
  8. [backcolor=transparent]目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]C[backcolor=transparent]/文件[backcolor=transparent]A
  9. [backcolor=transparent]目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]D[backcolor=transparent]/文件[backcolor=transparent]B
  10. [backcolor=transparent]目录[backcolor=transparent]B[backcolor=transparent]/文件[backcolor=transparent]A
  11. [backcolor=transparent]1.[backcolor=transparent] [backcolor=transparent]列出第一层目录和文件
  12. [backcolor=transparent]根据[backcolor=transparent]API[backcolor=transparent]中请求约定,需要设置[backcolor=transparent]Prefix[backcolor=transparent]为“”,[backcolor=transparent]Delimiter[backcolor=transparent][backcolor=transparent]"/"[backcolor=transparent]:
  13. [backcolor=transparent]返回结果如下:
  14. [backcolor=transparent]<?[backcolor=transparent]xml version[backcolor=transparent]=[backcolor=transparent]"1.0"[backcolor=transparent] encoding[backcolor=transparent]=[backcolor=transparent]"UTF-8"[backcolor=transparent]?>
  15. [backcolor=transparent]<[backcolor=transparent]ListBucketResult[backcolor=transparent]>
  16. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Name[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]-[backcolor=transparent]sample[backcolor=transparent]</[backcolor=transparent]Name[backcolor=transparent]>
  17. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]></[backcolor=transparent]Prefix[backcolor=transparent]>
  18. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Marker[backcolor=transparent]></[backcolor=transparent]Marker[backcolor=transparent]>
  19. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]MaxKeys[backcolor=transparent]>[backcolor=transparent]1000[backcolor=transparent]</[backcolor=transparent]MaxKeys[backcolor=transparent]>
  20. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Delimiter[backcolor=transparent]>[backcolor=transparent]/</[backcolor=transparent]Delimiter[backcolor=transparent]>
  21. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]IsTruncated[backcolor=transparent]>[backcolor=transparent]false[backcolor=transparent]</[backcolor=transparent]IsTruncated[backcolor=transparent]>
  22. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Contents[backcolor=transparent]>
  23. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Key[backcolor=transparent]>文件[backcolor=transparent]D[backcolor=transparent]</[backcolor=transparent]Key[backcolor=transparent]>
  24. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]LastModified[backcolor=transparent]>[backcolor=transparent]2015[backcolor=transparent]-[backcolor=transparent]11[backcolor=transparent]-[backcolor=transparent]06T10[backcolor=transparent]:[backcolor=transparent]07[backcolor=transparent]:[backcolor=transparent]11.000Z[backcolor=transparent]</[backcolor=transparent]LastModified[backcolor=transparent]>
  25. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]ETag[backcolor=transparent]>[backcolor=transparent]"8110930DA5E04B1ED5D84D6CC4DC9080"[backcolor=transparent]</[backcolor=transparent]ETag[backcolor=transparent]>
  26. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Type[backcolor=transparent]>[backcolor=transparent]Normal[backcolor=transparent]</[backcolor=transparent]Type[backcolor=transparent]>
  27. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Size[backcolor=transparent]>[backcolor=transparent]3340[backcolor=transparent]</[backcolor=transparent]Size[backcolor=transparent]>
  28. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]StorageClass[backcolor=transparent]>[backcolor=transparent]Standard[backcolor=transparent]</[backcolor=transparent]StorageClass[backcolor=transparent]>
  29. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Owner[backcolor=transparent]>
  30. [backcolor=transparent]      [backcolor=transparent]<[backcolor=transparent]ID[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]</[backcolor=transparent]ID[backcolor=transparent]>
  31. [backcolor=transparent]      [backcolor=transparent]<[backcolor=transparent]DisplayName[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]</[backcolor=transparent]DisplayName[backcolor=transparent]>
  32. [backcolor=transparent]    [backcolor=transparent]</[backcolor=transparent]Owner[backcolor=transparent]>
  33. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]Contents[backcolor=transparent]>
  34. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  35. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/</[backcolor=transparent]Prefix[backcolor=transparent]>
  36. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  37. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  38. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]>目录[backcolor=transparent]B[backcolor=transparent]/</[backcolor=transparent]Prefix[backcolor=transparent]>
  39. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  40. [backcolor=transparent]</[backcolor=transparent]ListBucketResult[backcolor=transparent]>
  41. [backcolor=transparent]可以看到:
  42. [backcolor=transparent]Contents[backcolor=transparent]返回的是第一层的文件:“文件[backcolor=transparent]D[backcolor=transparent]”。
  43. [backcolor=transparent]CommonPrefixes[backcolor=transparent]返回的是第一层的目录:“目录[backcolor=transparent]A[backcolor=transparent]/”[backcolor=transparent] [backcolor=transparent][backcolor=transparent] [backcolor=transparent]“目录[backcolor=transparent]B[backcolor=transparent]/”,而“目录[backcolor=transparent]A[backcolor=transparent]/”[backcolor=transparent] [backcolor=transparent][backcolor=transparent] [backcolor=transparent]“目录[backcolor=transparent]B[backcolor=transparent]/”下的文件名不显示。
  44. [backcolor=transparent]2.[backcolor=transparent] [backcolor=transparent]列出第二层目录[backcolor=transparent]A[backcolor=transparent]底下的目录和文件
  45. [backcolor=transparent]根据[backcolor=transparent]API[backcolor=transparent]中请求约定,需要设置[backcolor=transparent]Prefix[backcolor=transparent]为“目录[backcolor=transparent]A[backcolor=transparent]”,[backcolor=transparent]Delimiter[backcolor=transparent][backcolor=transparent]"/"[backcolor=transparent]:
  46. [backcolor=transparent]返回结果如下:
  47. [backcolor=transparent]<?[backcolor=transparent]xml version[backcolor=transparent]=[backcolor=transparent]"1.0"[backcolor=transparent] encoding[backcolor=transparent]=[backcolor=transparent]"UTF-8"[backcolor=transparent]?>
  48. [backcolor=transparent]<[backcolor=transparent]ListBucketResult[backcolor=transparent]>
  49. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Name[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]-[backcolor=transparent]sample[backcolor=transparent]</[backcolor=transparent]Name[backcolor=transparent]>
  50. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/</[backcolor=transparent]Prefix[backcolor=transparent]>
  51. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Marker[backcolor=transparent]></[backcolor=transparent]Marker[backcolor=transparent]>
  52. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]MaxKeys[backcolor=transparent]>[backcolor=transparent]1000[backcolor=transparent]</[backcolor=transparent]MaxKeys[backcolor=transparent]>
  53. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Delimiter[backcolor=transparent]>[backcolor=transparent]/</[backcolor=transparent]Delimiter[backcolor=transparent]>
  54. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]IsTruncated[backcolor=transparent]>[backcolor=transparent]false[backcolor=transparent]</[backcolor=transparent]IsTruncated[backcolor=transparent]>
  55. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Contents[backcolor=transparent]>
  56. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Key[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/文件[backcolor=transparent]C[backcolor=transparent]</[backcolor=transparent]Key[backcolor=transparent]>
  57. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]LastModified[backcolor=transparent]>[backcolor=transparent]2015[backcolor=transparent]-[backcolor=transparent]11[backcolor=transparent]-[backcolor=transparent]06T09[backcolor=transparent]:[backcolor=transparent]36[backcolor=transparent]:[backcolor=transparent]00.000Z[backcolor=transparent]</[backcolor=transparent]LastModified[backcolor=transparent]>
  58. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]ETag[backcolor=transparent]>[backcolor=transparent]"B026324C6904B2A9CB4B88D6D61C81D1"[backcolor=transparent]</[backcolor=transparent]ETag[backcolor=transparent]>
  59. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Type[backcolor=transparent]>[backcolor=transparent]Normal[backcolor=transparent]</[backcolor=transparent]Type[backcolor=transparent]>
  60. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Size[backcolor=transparent]>[backcolor=transparent]2[backcolor=transparent]</[backcolor=transparent]Size[backcolor=transparent]>
  61. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]StorageClass[backcolor=transparent]>[backcolor=transparent]Standard[backcolor=transparent]</[backcolor=transparent]StorageClass[backcolor=transparent]>
  62. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Owner[backcolor=transparent]>
  63. [backcolor=transparent]      [backcolor=transparent]<[backcolor=transparent]ID[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]</[backcolor=transparent]ID[backcolor=transparent]>
  64. [backcolor=transparent]      [backcolor=transparent]<[backcolor=transparent]DisplayName[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]</[backcolor=transparent]DisplayName[backcolor=transparent]>
  65. [backcolor=transparent]    [backcolor=transparent]</[backcolor=transparent]Owner[backcolor=transparent]>
  66. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]Contents[backcolor=transparent]>
  67. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]Contents[backcolor=transparent]>
  68. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Key[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/文件[backcolor=transparent]D[backcolor=transparent]</[backcolor=transparent]Key[backcolor=transparent]>
  69. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]LastModified[backcolor=transparent]>[backcolor=transparent]2015[backcolor=transparent]-[backcolor=transparent]11[backcolor=transparent]-[backcolor=transparent]06T09[backcolor=transparent]:[backcolor=transparent]36[backcolor=transparent]:[backcolor=transparent]00.000Z[backcolor=transparent]</[backcolor=transparent]LastModified[backcolor=transparent]>
  70. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]ETag[backcolor=transparent]>[backcolor=transparent]"B026324C6904B2A9CB4B88D6D61C81D1"[backcolor=transparent]</[backcolor=transparent]ETag[backcolor=transparent]>
  71. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Type[backcolor=transparent]>[backcolor=transparent]Normal[backcolor=transparent]</[backcolor=transparent]Type[backcolor=transparent]>
  72. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Size[backcolor=transparent]>[backcolor=transparent]2[backcolor=transparent]</[backcolor=transparent]Size[backcolor=transparent]>
  73. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]StorageClass[backcolor=transparent]>[backcolor=transparent]Standard[backcolor=transparent]</[backcolor=transparent]StorageClass[backcolor=transparent]>
  74. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Owner[backcolor=transparent]>
  75. [backcolor=transparent]      [backcolor=transparent]<[backcolor=transparent]ID[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]</[backcolor=transparent]ID[backcolor=transparent]>
  76. [backcolor=transparent]      [backcolor=transparent]<[backcolor=transparent]DisplayName[backcolor=transparent]>[backcolor=transparent]oss[backcolor=transparent]</[backcolor=transparent]DisplayName[backcolor=transparent]>
  77. [backcolor=transparent]    [backcolor=transparent]</[backcolor=transparent]Owner[backcolor=transparent]>
  78. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]Contents[backcolor=transparent]>
  79. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  80. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]B[backcolor=transparent]/</[backcolor=transparent]Prefix[backcolor=transparent]>
  81. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  82. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  83. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]C[backcolor=transparent]/</[backcolor=transparent]Prefix[backcolor=transparent]>
  84. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  85. [backcolor=transparent]  [backcolor=transparent]<[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  86. [backcolor=transparent]    [backcolor=transparent]<[backcolor=transparent]Prefix[backcolor=transparent]>目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]D[backcolor=transparent]/</[backcolor=transparent]Prefix[backcolor=transparent]>
  87. [backcolor=transparent]  [backcolor=transparent]</[backcolor=transparent]CommonPrefixes[backcolor=transparent]>
  88. [backcolor=transparent]</[backcolor=transparent]ListBucketResult[backcolor=transparent]>
  89. [backcolor=transparent]可以看到:
  90. [backcolor=transparent]Contents[backcolor=transparent]返回的是第二层的文件:“目录[backcolor=transparent]A[backcolor=transparent]/文件[backcolor=transparent]C[backcolor=transparent]”,“目录[backcolor=transparent]A[backcolor=transparent]/文件[backcolor=transparent]D[backcolor=transparent]”。
  91. [backcolor=transparent]CommonPrefixes[backcolor=transparent]返回的是第一层的目录:“目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]B[backcolor=transparent]/”,“目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]C[backcolor=transparent]/”和“目录[backcolor=transparent]A[backcolor=transparent]/目录[backcolor=transparent]D[backcolor=transparent]/”。而目录下的文件名不会被显示。


功能使用参考

展开
收起
青衫无名 2017-10-17 15:35:58 2202 分享 版权
0 条回答
写回答
取消 提交回答