【问题标题】:Blob files have to renamed manually to include parent folder pathBlob 文件必须手动重命名以包含父文件夹路径
【发布时间】:2014-02-26 10:43:04
【问题描述】:

我们是 Windows azure 的新手,在开发 sitefinity 应用程序时已将 Windows azure 存储用于 blob 对象,但通过从 Visual Studio 发布到 azure 上传到此存储的 blob 文件仅上传文件名且不维护前缀文件夹名称和斜杠。因此,我们必须在 windows azure 管理门户上手动重命名所有文件,并将文件夹名称和斜杠放在每个文件名的开头,以便访问这些图像的页面可以正确显示图像,否则图像不会显示由于路径不正确。 尽管在 sitefinity 管理面板中,当我们在这些页面中上传这些图像/blob 文件时,我们会将它们上传到一个文件夹中,并且我们已配置为利用 sitefinity 来使用 azure 存储而不是数据库。 请检查附件以查看屏幕截图。 请帮我解决这个问题。

【问题讨论】:

    标签: windows azure storage blob sitefinity


    【解决方案1】:

    我想先提几点:

    1. Windows Azure 不支持重命名功能。重命名 blob 功能 = 复制 blob,然后删除 blob。
    2. 复制 blob 操作是异步的,因此您必须等待复制操作完成才能删除 blob。
    3. Blob 存储本身不支持文件夹层次结构。正如您可能已经发现的那样,您可以通过在 blob 名称(例如 logo.png)前面加上您想要的文件夹名称(例如图像)并用斜杠 (/) 分隔它们来创建文件夹的错觉,这样您的 blob 名称就变成了图像/logo.png。

    现在来解决您的问题。不用说,手动重命名 blob 将是一项繁琐的工作。我建议使用存储管理工具来做到这一点。一个这样的例子是来自 Cerebrata 的Azure Management Studio。如果您使用该工具,基本上您可以做的是在容器中创建一个空文件夹,然后将文件移动到该文件夹​​中。对我来说,这将是实现您的目标的最快方法。

    如果您想编写一些代码来做到这一点,以下是您将采取的步骤:

    1. 首先,您将列出 Blob 容器中的所有 Blob。
    2. 接下来,您将遍历此列表。
    3. 对于每个 blob(我们称其为源 blob),您将获取其名称并在所需的文件夹名称前添加并创建 CloudBlockBlob 对象的实例。
    4. 接下来,您将在该新 blob 上使用 StartCopyFromBlob 对该 blob 启动复制 blob 操作,其中 source 是您的源 blob。
    5. 您需要等待复制操作完成。复制操作完成后,您可以安全地删除源 blob。

    附:我会写一些代码,但不幸的是我被其他东西困住了。稍后我可能会写一些东西(但请不要为此屏住呼吸:))。

    【讨论】:

    • 太棒了。非常感谢这一点。一旦我按照您的帖子实施后将回复,并将考虑管理工作室。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2016-02-27
    相关资源
    最近更新 更多