如何将 Azure blob 文件复制到 Azure 本地存储

发布于 2024-12-08 09:25:01 字数 864 浏览 1 评论 0原文

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

我有一个 Spatialite 数据库文件,将保存在 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 属性配置本地存储

I have a WCF service hosted in Azure.

I have a spatialite database file I'm going to keep in Azure blob storage (1.1G). Compressed it is 500K.

I would like to copy it to local storage when my service starts, and then use spatialite to run various spatial functions off the database file. The spatial data is static.

Does anybody have a code snippet (C#) to copy a file from azure blob storage to local storage?

(also, I think this approach makes sense - does it?)

(also, should I bother compressing the file for blob storage?)

Thanks

EDIT: Thanks for the first two responses. I was hoping for some code snippets to use. I could use a little more explanation on which would be the better route to go. Just code it all or use this bootstrap idea.

SOLUTION:
I'm marking SMARX's as answer because it should work for any protected azure file, but since the file is a publicly available blob file, I skipped the CloudStorageAccount route suggested by SMARX, in favor of simple web access. I'm wondering if there are any speed advantages to using SMARX's approach though. Any comments would be appreciated.

// 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");

NOTE: You have to configure the local storage through your webRole properties

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拍不死你 2024-12-15 09:25:01

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

这样做在执行其他操作之前,在 OnStart 中的 RoleEntryPoint 中?

How about: CloudStorageAccount.Parse(...).CreateCloudBlobClient().GetBlobReference("path/of/blob").DownloadFile(RoleEnvironment.GetLocalResource("nameOfLocalResource").RootPath);

Do that in your RoleEntryPoint in OnStart before you do anything else?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文