2

我有一个托管在 Azure 中的 WCF 服务。

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

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

有人有代码片段(C#)来将文件从 azure blob 存储复制到本地存储吗?

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

(另外,我应该费心压缩文件以进行 blob 存储吗?)

谢谢

编辑:感谢前两个回复。我希望使用一些代码片段。我可以使用更多的解释来说明哪条路线更好。只需将其全部编码或使用此引导想法。

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

// 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 属性配置本地存储

4

1 回答 1

2

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

在你做任何其他事情之前,在 OnStart 的 RoleEntryPoint 中这样做?

于 2011-10-06T22:57:34.327 回答