从Azure blob存储中读取文件

我想从azure存储中读取一个PDF文件字节,因为我有一个文件路径。

https://hostedPath/pdf/1001_12_Jun_2012_18_39_05_594.pdf 

那么可以通过直接传递其路径名来从blob存储中读取内容吗? 我也在使用c#。

只要blob是公共的 ,你就可以绝对传递blob url。 例如,您可以将其嵌入到html图像或链接中:

 click here 

默认情况下,blob容器是私有的 。 要启用公共读取访问权限,您只需在创建容器时更改容器权限。 例如:

 var blobStorageClient = storageAccount.CreateCloudBlobClient(); var container = blobStorageClient.GetContainerReference("pdf"); container.CreateIfNotExist(); var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions); 

就像David解释的那样,只要容器不是私有的,你就可以通过它的url访问任何blob。

如果容器是私有的,您仍然可以使用共享访问签名 (SAS)通过URL访问您的文件。 这将允许您授予用户下载文件的权利(通过向他们提供SAS, 通常附加到URL ),但要及时限制它们。

例如,当您付费下载时,这是完美的,以保护您的文件,但如果有人付费,则允许在有限的时间内下载文件。

现在,在您的问题中,您声明您正在使用C#。 如果要在WPF / Windows窗体/控制台应用程序中下载文件,只需使用WebClient下载文件(如果容器是公共的,或者您使用SAS附加URL):

 WebClient myWebClient = new WebClient(); myWebClient.DownloadFile("https://myaccount.blob.core.windows.net/pdf/1001_12_Jun_2012_18_39_05_594.pdf", @"D:\Data\myPdfFile.pdf");