【问题标题】:Read file from Azure blob storage从 Azure Blob 存储读取文件
【发布时间】:2012-06-16 08:32:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# azure azure-storage azure-blob-storage


    【解决方案1】:

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

    <a href="https://myaccount.blob.core.windows.net/pdf/1001_12_Jun_2012_18_39_05_594.pdf">click here</a>
    

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

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

    【讨论】:

    • 另外请参阅@Sandrino 对共享访问签名的回答,您可能会发现这对于客户特定内容与公共内容(例如图像、帮助文件、小册子等)非常有用。跨度>
    【解决方案2】:

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

    如果容器是私有的,您仍然可以使用 Shared Access Signatures (SAS) 通过 url 访问您的文件。这将允许您授予用户下载文件的权利(通过向他们提供 SAS,usually appended to the URL)但及时限制他们。

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

    现在,在您的问题中,您声明您使用的是 C#。如果你想在 WPF/Windows Forms/Console 应用程序中下载文件,你可以简单地使用 WebClient 来下载文件(如果容器是公共的或者你在 URL 中附加了 SAS):

    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");    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2018-11-04
      • 2021-10-18
      • 2021-04-08
      相关资源
      最近更新 更多