如何使用WP从WP应用程序上传照片到Azure Blob?

时间:2012-06-05 17:52:20

标签: windows-phone-7 azure azure-storage azure-storage-blobs

我可以使用以下代码从Azure MVC Web角色使用SAS将照片上传到Blob:

using (var WS = new HLServiceClient())
{    
     /* Getting a SAS Write URI */
     var sasUri = WS.GetSasUriForBlobWrite(HLServiceReference.BusinessLogicMediaUsage.News, fileName);
     var writeBlob = new CloudBlob(sasUri);
     writeBlob.UploadFromStream(fileData.InputStream);
}

我想从WP应用程序做同样的事情。但我无法弄清楚该怎么做。我没有很多编程技巧。

您能告诉我如何使用SAS从WP应用程序上传照片到blob吗?

在NuGet上有一个适用于Windows Phone的Windows Azure存储客户端库:Phone.Storage,它说“Windows Phone的类库直接与Windows Azure存储服务通信”,我希望找到一个简单的解决方案,使用它:http://www.nuget.org/packages/Phone.Storage

我在Phone.Storage NuGet上找到了一个视频教程:  http://channel9.msdn.com/posts/Using-the-Windows-Phone-Storage-NuGets-for-Windows-Azure

还有一个示例应用程序演示了Phone.Storage NuGet的用法。  http://www.nuget.org/packages/Phone.Storage.Sample

但是,如果我能在我的应用场景中实现这一点,它会让我感到厌烦吗?

1 个答案:

答案 0 :(得分:1)

首先,您需要从托管服务生成SAS。您可以使用CloudBlob.GetSharedAccessSignature方法(请参阅http://msdn.microsoft.com/en-us/library/windowsazure/ee772922.aspx获取示例)。

在Windows Phone端,对于小文件,您只需向SAS URL发出HTTP请求即可。您可以使用HttpWebRequest来执行此操作。尝试搜索网络,你可以找到很多样本,例如http://blogs.msdn.com/b/devfish/archive/2011/04/07/httpwebrequest-fundamentals-windows-phone-services-consumption-part-2.aspx

对于大文件(大于64 MB),您需要将它们分成更小的部分,将每个部分作为块上传,然后提交blob列表(PUT阻止列表:http://msdn.microsoft.com/en-us/library/windowsazure/dd179467)。这是一项繁琐但并非困难的任务。您需要创建相当多的HTTP请求。

Windows Phone Toolkit for Windows Phone也可以提供帮助:http://watwp.codeplex.com/。它包含一个类似于.NET Azure库的库。