【问题标题】:Windows Azure Blob Storage . (dot) is ignored in an object nameWindows Azure Blob 存储。 (点)在对象名称中被忽略
【发布时间】:2016-05-19 05:18:00
【问题描述】:

我在我的项目中使用 Windows Azure Blob Storage 来存储数据。 我上传文件和文件夹。文件夹只是 0 大小的对象,名称以 '/' 结尾

我发现如果我尝试用“zzz”命名一个文件夹。然后在天蓝色我会得到“zzz”(。被删除) 另外,z.z.z.被转换为 zzz,但 z.z.z 没有被转换。 所以,看起来。对象名称末尾的所有点都被删除。

请求就像

PUT myblob.blob.core.windows.net/myblobtop/zzz.?timeout=30
headers:
[Content-Encoding] => 
[Content-Language] => 
[Content-Length] => 0
[Content-MD5] => 
[Content-Type] => application/directory
[x-ms-version] => 2009-09-19
[Connection] => Keep-Alive
[x-ms-blob-type] => BlockBlob

然后有一个名为 myblobtop/zzz 的对象,没有。最后

有谁知道这是什么以及如何解决? 也许一些 url 编码来编码。最后?

我使用此 API 调用添加文件夹 https://msdn.microsoft.com/en-us/library/azure/dd179451.aspx

【问题讨论】:

    标签: php azure azure-storage


    【解决方案1】:

    你不能有一个 .在 blobname 的末尾:

    Blob 名称

    Blob 名称必须符合以下命名规则: Blob 名称 可以包含任意字符组合。 Blob 名称必须位于 至少一个字符长且不能超过 1,024 个字符 长。

    Blob 名称区分大小写。

    保留的 URL 字符必须正确转义。路径数 包含 blob 名称的段不能超过 254。路径段是 连续分隔符之间的字符串(例如,向前 斜杠“/”)对应于虚拟目录的名称。 System_CAPS_noteNote

    避免以点 (.)、正斜杠 (/) 或 两者的顺序或组合。

    Blob 服务基于平面存储方案,而不是分层存储 方案。但是,您可以指定字符或字符串分隔符 在 blob 名称中创建虚拟层次结构。例如, 以下列表显示了有效且唯一的 blob 名称。注意一个字符串 可以作为 blob 名称和虚拟目录名称在 同一个容器:

    /a

    /a.txt

    /a/b

    /a/b.txt

    枚举时可以利用分隔符 斑点。

    Naming and Referencing containers

    【讨论】:

    • 是的。但它不是容器。在我的示例中,“myblobtop”是一个容器和 zzz。是一个文件夹。在我的真实测试中,容器也可以(只是小写字母)
    • 为什么要添加空文件夹?文件夹只是 blob 名称的一部分,因此无需创建空文件夹
    猜你喜欢
    • 2016-03-04
    • 2018-06-21
    • 2014-08-06
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多