繁体   English   中英

从Azure Blob存储下载文件

[英]Download File from Azure Blob Storage

我有一个允许用户上传照片的应用程序,这些照片存储在Azure Blob存储中。 用户还可以查看这些照片。 要查看它们,我们希望应用程序将图像下载到默认下载位置。 目前,上传工作完美。 但是我为Azure API找到的下载功能似乎没有做任何事情。 此外,我无法真正指定下载位置,因为此功能需要在台式机/笔记本电脑以及具有不同默认目录的移动设备上运行。

这似乎应该很简单,但我找不到任何可以帮助我的东西。

以下是我的代码示例:

CloudBlobContainer container = blobClient.GetContainerReference("photos");
CloudBlob blob = container.GetBlobReference(photo.BlobUrl);
//copy blob from cloud to local gallery
blob.DownloadToFile(photo.ImageName);

blob.DownloadToFile(photo.ImageName); 导致服务器请求但没有任何反应,也就是没有下载文件。

您是否有任何理由不能让客户端直接从blob存储中下载文件并使用内置的浏览器功能来保存它? 如果文件是私有的,则生成SAS签名非常容易。 这将卸载通过您的服务器下载并删除该开销。

这里:

blob.DownloadToFile(photo.ImageName);

你需要告诉它保存文件的位置和你想要的名称:

blob.DownloadToFile("C:\mycutepuppy.jpg");

你可以使用System.Environment.SpecialFolder枚举来找出基于当前系统的文件夹,然后追加你想要的图像名称;

这是一个更完整的例子:

var imgPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), + photo.ImageName);

blob.DownloadToFile(imgPath);

这会将图像保存到用户桌面目录所在的正确路径。 以下是特殊文件夹枚举的文档。

http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

我想知道您对此代码的期望是什么,但特别是在不同平台的情况下,这不起作用。 我建议您使用DownloadToStream方法。 然后,您可以决定如何处理流。 例如,询问用户他想要保存文件的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM