2017-06-06 50 views
0

我使用Azure的SAS网址上传文件到Blob存储:如何检查Azure Blob存储上传是否成功?

var blockBlob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl)); 
blockBlob.UploadFromFile(filePath); 

文件存在我的硬盘上,而URL应该是正确的,因为它会自动从Windows应用商店摄入API检索(并且,如果我稍微更改URL的签名部分中的一个字符,则使用HTTP 403将上载失败)。

然而,检查

var blobs = blockBlob.Container.ListBlobs(); 

结果是Count = 0,所以我想,如果上载成功,是什么时候?不幸的是,UploadFromFile方法(类似于UploadFromStream方法)没有返回类型,所以我不知道如何检索上传的结果)。

如果我尝试连接到使用Azure Storage Explorer的SAS URL,上市 BLOB容器失败,出现错误“验证错误。签名字段格式不正确”。我尝试使用URL转义URL的签名部分,因为这似乎是在某些类似情况下出现该错误的原因,但这并不能解决问题。

有没有什么办法来检查blob上传的状态?有没有人知道为什么自动生成的URL(由微软的官方API之一提供)无法连接到使用Azure Explorer?

回答

0

请检查SAS的sp字段。它显示了你被授权使用blob的权利。例如,sp = rw表示您可以读取blob并使用此SAS将内容写入blob。 sp = w意味着您只能使用此SAS将内容写入Blob。

如果您有阅读权限,则可以将SAS URL复制到浏览器地址栏。浏览器将为您下载或显示blob内容。

有没有什么办法来检查blob上传的状态?

如果代码没有抛出异常,则说明blob已成功上传。否则,将抛出异常。

try 
{ 
    blockBlob.UploadFromFile(filePath); 
} 
catch(Exception ex) 
{ 
    //uploaded failed 
} 

您还可以使用任何Web调试代理工具(例如Fiddler)来确认它以捕获存储服务器的响应消息。 201如果blob已成功上传,则会返回创建的状态码。

enter image description here

大家有一个想法,为什么一个自动生成的URL(通过微软官方的一个API交付)无法连接到使用Azure的浏览器?

Azure存储资源管理器仅允许我们使用SAS连接存储帐户或使用SAS连接存储服务(blob容器,队列或表)。它不允许我们使用SAS连接blob项目。

+0

感谢 - 不知道我们可以简单地在浏览器中打开SAS网址! – andreask