【发布时间】: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