从Azure Blob存储下载文件

时间:2012-10-24 15:41:42

标签: c# azure download azure-storage-blobs

我有一个允许用户上传照片的应用程序,这些照片存储在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);导致服务器请求但没有任何反应,也就是没有下载文件。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

下面:

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

答案 2 :(得分:3)

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