Blob文件必须手动重命名以包含父文件夹path

我们是Windows Azure的新手,在开发sitefinity应用程序时使用了Windows Azure存储来访问blob对象,但是通过从Visual Studio发布到Azure的blob文件仅通过文件名上传文件,不保留前缀文件夹名字和斜线。 因此,我们必须在Windows Azurepipe理门户上手动重命名所有文件,并将文件夹名称和斜线放在每个文件名的开头,以便正在访问这些图像的页面可以正确显示图像,否则由于不正确的path 虽然在sitefinitypipe理面板中,当我们上传这些图片/ blob文件在这些页面,我们上传他们在一个文件夹,我们已经configuration,以利用sitefinity使用azure存储,而不是数据库。 请检查附件中的文件以查看屏幕截图。 请帮我解决这个问题。 在这里输入图像说明

Solutions Collecting From Web of "Blob文件必须手动重命名以包含父文件夹path"

我首先想提一些事情:

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

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

如果你想写一些代码来做到这一点,这里是你将采取的步骤:

  1. 首先你会列出一个blob容器中的所有blob。
  2. 接下来,你将遍历这个列表。
  3. 对于每个blob(我们称之为源blob),您将得到它的名称,并预先设置所需的文件夹名称,并创建一个CloudBlockBlob对象的实例。
  4. 接下来,您将在这个新的blob上使用StartCopyFromBlob在该Blob上启动一个复制blob操作,其中源是您的源blob。
  5. 您需要等待复制操作完成。 一旦复制操作完成,您可以安全地删除源blob。

PS我会写一些代码,但不幸的是我坚持与别的东西。 我可能会写些东西(但请不要屏住呼吸:))。