閱讀371 返回首頁    go 阿裏雲


查看對象列表__管理文件_開發人員指南_對象存儲 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. 舉個例子:
  2. 假如在OSS的Bucket:oss-sample下有如下Object:
  3. 文件D
  4. 目錄A/文件C
  5. 目錄A/文件D
  6. 目錄A/目錄B/文件B
  7. 目錄A/目錄B/目錄C/文件A
  8. 目錄A/目錄C/文件A
  9. 目錄A/目錄D/文件B
  10. 目錄B/文件A
  11. 1. 列出第一層目錄和文件
  12. 根據API中請求約定,需要設置Prefix為“”,Delimiter為"/":
  13. 返回結果如下:
  14. <?xml version="1.0" encoding="UTF-8"?>
  15. <ListBucketResult>
  16. <Name>oss-sample</Name>
  17. <Prefix></Prefix>
  18. <Marker></Marker>
  19. <MaxKeys>1000</MaxKeys>
  20. <Delimiter>/</Delimiter>
  21. <IsTruncated>false</IsTruncated>
  22. <Contents>
  23. <Key>文件D</Key>
  24. <LastModified>2015-11-06T10:07:11.000Z</LastModified>
  25. <ETag>"8110930DA5E04B1ED5D84D6CC4DC9080"</ETag>
  26. <Type>Normal</Type>
  27. <Size>3340</Size>
  28. <StorageClass>Standard</StorageClass>
  29. <Owner>
  30. <ID>oss</ID>
  31. <DisplayName>oss</DisplayName>
  32. </Owner>
  33. </Contents>
  34. <CommonPrefixes>
  35. <Prefix>目錄A/</Prefix>
  36. </CommonPrefixes>
  37. <CommonPrefixes>
  38. <Prefix>目錄B/</Prefix>
  39. </CommonPrefixes>
  40. </ListBucketResult>
  41. 可以看到:
  42. Contents返回的是第一層的文件:“文件D”。
  43. CommonPrefixes返回的是第一層的目錄:“目錄A/” 和 “目錄B/”,而“目錄A/” 和 “目錄B/”下的文件名不顯示。
  44. 2. 列出第二層目錄A底下的目錄和文件
  45. 根據API中請求約定,需要設置Prefix為“目錄A”,Delimiter為"/":
  46. 返回結果如下:
  47. <?xml version="1.0" encoding="UTF-8"?>
  48. <ListBucketResult>
  49. <Name>oss-sample</Name>
  50. <Prefix>目錄A/</Prefix>
  51. <Marker></Marker>
  52. <MaxKeys>1000</MaxKeys>
  53. <Delimiter>/</Delimiter>
  54. <IsTruncated>false</IsTruncated>
  55. <Contents>
  56. <Key>目錄A/文件C</Key>
  57. <LastModified>2015-11-06T09:36:00.000Z</LastModified>
  58. <ETag>"B026324C6904B2A9CB4B88D6D61C81D1"</ETag>
  59. <Type>Normal</Type>
  60. <Size>2</Size>
  61. <StorageClass>Standard</StorageClass>
  62. <Owner>
  63. <ID>oss</ID>
  64. <DisplayName>oss</DisplayName>
  65. </Owner>
  66. </Contents>
  67. <Contents>
  68. <Key>目錄A/文件D</Key>
  69. <LastModified>2015-11-06T09:36:00.000Z</LastModified>
  70. <ETag>"B026324C6904B2A9CB4B88D6D61C81D1"</ETag>
  71. <Type>Normal</Type>
  72. <Size>2</Size>
  73. <StorageClass>Standard</StorageClass>
  74. <Owner>
  75. <ID>oss</ID>
  76. <DisplayName>oss</DisplayName>
  77. </Owner>
  78. </Contents>
  79. <CommonPrefixes>
  80. <Prefix>目錄A/目錄B/</Prefix>
  81. </CommonPrefixes>
  82. <CommonPrefixes>
  83. <Prefix>目錄A/目錄C/</Prefix>
  84. </CommonPrefixes>
  85. <CommonPrefixes>
  86. <Prefix>目錄A/目錄D/</Prefix>
  87. </CommonPrefixes>
  88. </ListBucketResult>
  89. 可以看到:
  90. Contents返回的是第二層的文件:“目錄A/文件C”,“目錄A/文件D”。
  91. CommonPrefixes返回的是第一層的目錄:“目錄A/目錄B/”,“目錄A/目錄C/”和“目錄A/目錄D/”。而目錄下的文件名不會被顯示。

功能使用參考

最後更新:2016-11-23 16:04:09

  上一篇:go 設置對象/文件元信息__管理文件_開發人員指南_對象存儲 OSS-阿裏雲
  下一篇:go 拷貝對象__管理文件_開發人員指南_對象存儲 OSS-阿裏雲