我可以使用以下代码从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
但是,如果我能在我的应用场景中实现这一点,它会让我感到厌烦吗?
答案 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库的库。