6

我有一个允许用户上传照片的应用程序,这些照片存储在 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);也就是没有下载文件。

4

3 回答 3

6

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

于 2012-10-24T22:52:34.647 回答
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

于 2012-10-24T18:31:14.743 回答
3

I wonder what do you expect from this code, but especially in the case of different platform this would not work. I suggest that you use the DownloadToStream method instead. Then you can decide what to do with the stream. For example ask the user where does he want to save the file.

于 2012-10-24T16:15:00.573 回答