【问题标题】:How to copy a Azure blob file to Azure local storage如何将 Azure Blob 文件复制到 Azure 本地存储
【发布时间】:2011-10-05 19:00:11
【问题描述】:

我在 Azure 中托管了 WCF 服务。

我有一个要保存在 Azure blob 存储 (1.1G) 中的空间数据库文件。压缩后为500K。

我想在我的服务启动时将其复制到本地存储,然后使用 spatialite 从数据库文件中运行各种空间功能。空间数据是静态的。

有人有代码 sn-p (C#) 将文件从 Azure Blob 存储复制到本地存储吗?

(另外,我认为这种方法是有道理的——是吗?)

(另外,我应该为 blob 存储压缩文件吗?)

谢谢

编辑:感谢前两个回复。我希望使用一些代码 sn-ps。我可以使用更多的解释来说明哪条路线更好。只需编写所有代码或使用此引导思路即可。

解决方案: 我将 SMARX 标记为答案,因为它应该适用于任何受保护的 azure 文件,但由于该文件是公开可用的 blob 文件,因此我跳过了 SMARX 建议的 CloudStorageAccount 路由,以支持简单的 Web 访问。我想知道使用 SMARX 的方法是否有任何速度优势。任何 cmets 将不胜感激。

// Retrieve an object that points to the local storage resource
LocalResource localResource = RoleEnvironment.GetLocalResource("MyLocalStorage");

WebClient webClient = new WebClient();
webClient.DownloadFile(blobUrl, localResource.RootPath + "mySpatialiteDB.sqlite");

注意:您必须通过 webRole 属性配置本地存储

【问题讨论】:

  • 使用 SDK,使用 GetBlob API 函数 - 或简单地使用 REST 调用:myaccount.blob.core.windows.net/mycontainer/myblob 这是一个非常小的文件,因此从计算的角度来看,压缩可能不值得。跨度>
  • 您可以使用启动任务来下载 blob。有趣的是,有一个名为 bootstrapper 的工具可以从 blob 存储中为您下载和解压缩。在这里查看:bootstrap.codeplex.com

标签: c# azure azure-blob-storage spatialite


【解决方案1】:

怎么样:CloudStorageAccount.Parse(...).CreateCloudBlobClient().GetBlobReference("path/of/blob").DownloadFile(RoleEnvironment.GetLocalResource("nameOfLocalResource").RootPath);

在您执行其他任何操作之前,在 OnStart 的 RoleEntryPoint 中执行此操作?

【讨论】:

  • 这更像!一个声明就完成了。我将如何设置它以便在我在本地运行时不会尝试下载此文件? (即在本地运行时绕过负载,但在云端使用)
  • 包裹if (!RoleEnviornment.IsEmulated)。 (SDK 1.5 中的新功能。)
  • 我认为这就是答案,一旦我让它工作,我会标记它并发布工作代码
  • 当然,我指的是 RoleEnvironment(上面拼错了)。
猜你喜欢
  • 2020-08-18
  • 2019-02-24
  • 2022-09-28
  • 1970-01-01
  • 2021-07-29
  • 2017-08-03
  • 2019-04-01
  • 2017-05-06
  • 2019-10-30
相关资源
最近更新 更多