【问题标题】:I want to list all the subfolder inside a container using azure storage api我想使用 azure storage api 列出容器内的所有子文件夹
【发布时间】:2017-06-24 06:31:02
【问题描述】:

我有等级制度

my container
  --images
      --img01
      --img02

我想发出一个休息请求并得到结果:<BlobPrefix>images</BlobPrefix>

如链接https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/enumerating-blob-resources“分隔的 Blob 列表”部分下所示

但是,我没有得到这个结果,而是将所有资源名称作为递归调用。好像我没有提供任何分隔符。

要签名的字符串是:

GET /account/mycontainer

x-ms-date:Tue, 07 Feb 2017 05:38:21 GMT
x-ms-version:2016-05-31
comp:list
delimeter:/
maxresults:4
restype:container

我要发送的网址:

http://account.blob.core.windows.net/mycontainer?restype=container&comp=list&delimeter=/&maxresults=4

结果我得到:

<xml>
<blobs>
<blob><Name>images/img01</Name>
<blob><Name>images/img02</Name>
</blobs>
</xml>

但是基于上述链接。响应应该是:

<xml>
<blobs>
<BlobPrefix>
<Name>images/</Name>
</BlobPrefix >
</xml>

【问题讨论】:

  • 返回的响应是正确的。在 blob 存储的情况下,这些文件夹只是合乎逻辑的。存储帐户 > 容器 > blob 是存储 blob 的结构。由 \ 分隔会产生一个类似于逻辑分隔的文件夹,但它都是 blob 的一部分。单独的 blob uri 是独一无二的。

标签: rest azure azure-storage azure-blob-storage


【解决方案1】:

根据你的描述,我检查了Delimited Blob List,并在我这边测试了这个方法。为了简化这个问题,我创建了一个容器并将“容器公共访问级别”设置为“容器和 blob 的公共读取访问权限”。这是我的 blob 容器的文件结构:

  • 列出 blob 而不指定分隔符(默认为“/”)

https://brucechen.blob.core.windows.net/brucechen?restype=container&comp=list

结果:

  • 通过指定分隔符列出 blob(默认为“/”)

https://brucechen.blob.core.windows.net/brucechen?restype=container&comp=list&delimiter=%2F

结果:

根据你的stringToSigndelimeter的名字不正确,需要改成delimiter。更多详情可以参考List Blobs

【讨论】:

  • 兄弟,谢谢。这是一个巨大的错误,我认为它与此有关,但简直不敢相信。
猜你喜欢
  • 1970-01-01
  • 2022-11-20
  • 2015-10-15
  • 2020-11-12
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
相关资源
最近更新 更多