从Azure Blob存储下载文件

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

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

以下是我的代码示例:

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存储中下载文件并使用内置的浏览器function来保存它? 如果文件是私有的,则生成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方法。 然后,您可以决定如何处理流。 例如,询问用户他想要保存文件的位置。