Чтение файла из хранилища Azure blob

Я хочу прочитать байты PDF файла из azure storage, для этого у меня есть путь к файлу.

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

Итак, можно читать содержимое из хранилища blob, напрямую передавая его имя Path? Также я использую С#.

Ответ 1

Пока blob является общедоступным, вы можете абсолютно передать URL-адрес blob. Например, вы можете встроить его в 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);

Ответ 2

Так же, как Дэвид объяснил, что вы можете получить доступ к любому блобу по его URL-адресу, пока контейнер не является приватным.

Если контейнер является приватным, вы все равно можете сделать ваши файлы доступными через URL-адрес, используя Сигналы общего доступа (SAS). Это позволит вам предоставить пользователям право загружать файл (предоставляя им SAS, обычно добавляемый к URL-адресу), но ограничивая их во времени,

Это прекрасно, когда вы платите за загрузки, например, для защиты ваших файлов, но позволяете им загружаться в течение ограниченного времени, если кто-то заплатил за него.

Теперь, в своем вопросе вы заявляете, что используете С#. Если вы хотите загрузить файл в приложении 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");