【问题标题】:Azure Rest API. How to create a folder and check whether a folder exists or not?Azure 休息 API。如何创建文件夹并检查文件夹是否存在?
【发布时间】:2017-02-07 09:34:08
【问题描述】:

我想使用 azure blob rest api 创建文件夹,还想检查文件夹是否存在。

Hierarchy:

arjun/images/
arjun/Videos/001.avi
arjun/Vidos/002.avi
img001.jpg

我尝试发送 PUT 请求以创建带有路径的文件夹 例如"arjun/images/":

  1. 这会创建一个文件夹,但它不是空的。
  2. 它正在文件夹内创建一个没有名称的空文件。

现在,即使这是正确的,另一个问题是当我想检查文件夹是否存在时:

  1. 我正在发送带有前缀作为文件夹路径的列表 blob 调用。
  2. 现在的问题是区分空文件夹和不存在的文件夹,因为如果请求格式正确,它将始终是200 Ok messageBlob element empty

因此,无法判断文件夹是否不存在或为空。

即带有前缀 "arjun/xyz/""arjun/images/ 的 blob 列表请求 两者都将成功,但响应主体为空,因为两者都没有 包含任何内容。但是,实际上第一个文件夹 xyz 不存在 第二个文件夹存在但为空。

【问题讨论】:

  • 我很困惑:'arjun' 是容器名称,还是您的 blob 存储帐户名称?请记住,没有文件夹 - 只有容器。

标签: azure azure-blob-storage


【解决方案1】:

Blob 服务基于平面存储方案,而不是分层存储 方案。

来源:Blob Names

这清楚地表明,Azure 存储 Blob 实际上没有文件夹层次结构,“文件夹”只是用于创建虚拟层次结构的虚拟目录。

此外,如果您尝试使用 Microsoft 存储资源管理器创建虚拟目录,它还会向您突出显示虚拟目录在您将 blob 放入其中之前不存在,这很有意义,因为虚拟目录在fact 只是 blob 名称的一部分。

总之,如果您“创建”它而不将任何 blob 上传到其中,则虚拟目录不存在。

【讨论】:

  • 这个例子真的很有帮助。将此标记为已接受。我认为你是对的,我对亚马逊感到困惑。
【解决方案2】:

正如 David Makogon 和 juvchan 提到的,Azure 存储 blob 没有文件夹层次结构。如果“文件夹”中没有blob,则“文件夹”不存在是同一个意思。如果“文件夹”中有 blob,那么我们可以从 List blobs API 响应正文中获取列表 blob 计数。所以我们不用担心文件夹不存在或为空,它们都意味着它不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2014-06-10
    • 2013-03-12
    • 2021-07-08
    • 1970-01-01
    • 2022-11-06
    • 2011-11-15
    相关资源
    最近更新 更多