【问题标题】:Using of Windows Azure BLOB instead of folders [duplicate]使用 Windows Azure BLOB 而不是文件夹 [重复]
【发布时间】:2012-02-04 00:47:18
【问题描述】:

可能重复:
How to create a sub container in azure storage location

我想迁移一个应用程序以在 Windows Azure 下工作。在应用程序中,我将文件上传到服务器上的某个文件夹。此文件夹包含其他嵌套文件夹,这些嵌套文件夹包含文件。

以下是一些示例:

  • 公司名称/CV/CV1.docx
  • 公司名称/Pics/Pic1.jpeg
  • 公司名称/Pics/Pic2.jpeg

现在在 Windows Azure 中,我想使用 BLOB 存储来保存我的文件。 BLOB 中的问题是我有容器,我无法创建嵌套容器来组织我的文件。

谁能帮我找到最好的解决方案来保存我的文件。

【问题讨论】:

    标签: c# azure


    【解决方案1】:

    您可以使用 Windows Azure 驱动器,它就像您的标准硬盘驱动器一样工作,即。 "X:" 但实际上将文件存储在 Azure Blob 中。通过这种方式,您可以像在旧应用程序中一样处理文件。

    来自article

    Windows Azure 驱动器充当本地 NTFS 卷,它安装在服务器的文件系统上,并且可供角色中运行的代码访问。写入 Windows Azure 驱动器的数据存储在 Windows Azure Blob 服务中定义的页 Blob 中,并缓存在本地文件系统中。因为写入驱动器的数据存储在页 blob 中,所以即使角色实例被回收,数据也会得到维护。因此,Windows Azure 驱动器可用于运行必须保持状态的应用程序,例如第三方数据库应用程序。

    【讨论】:

    • Azure 驱动器可能只有一个写入器。如果应用程序存在多个接受文件上传的 Web 或 Worker 角色实例,则它们无法写入同一个 Azure 驱动器。
    【解决方案2】:

    您可以使用 azure blob 存储来存储文件

    您需要以这种方式操作 blob 容器的唯一选项是使用以下选项:

    new BlobRequestOptions { UseFlatBlobListing = true }
    


    您将能够使用这句话列出文件:

    yourContainer.ListBlobs(new BlobRequestOptions { UseFlatBlobListing = true });
    

    它们会像这样出现:

    • 公司名称/CV/CV1.docx
    • 公司名称/Pics/Pic1.jpeg
    • 公司名称/Pics/Pic2.jpeg


    您将能够像这样检索您的文件:

    yourBlob.DownloadToFile("CompanyName/Pics/Pic2.jpeg", new BlobRequestOptions { UseFlatBlobListing = true });
    


    您可以在此处找到有关此选项的更多信息: Msdn Definition of the UseFlatBlobListing Property

    【讨论】:

      【解决方案3】:

      您可以使用 Cloud Drive,它使您能够在应用程序中安装 NTFS 虚拟驱动器。

      但我认为最好的解决方案是使用 BLOB 存储分隔符。您不能创建子容器,但可以添加带有分隔符的 blob。例如 Container_Name/books/book1.doc Container_Name/books/book2.doc Container_Name/images/img1.jpg 然后,您可以通过指定分隔符列出 blob。

      【讨论】:

        猜你喜欢
        • 2021-05-29
        • 2016-07-10
        • 1970-01-01
        • 2023-01-20
        • 2021-04-16
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        • 2015-04-02
        相关资源
        最近更新 更多