Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как прочитать/загрузить все файлы из контейнера/большого двоичного объекта Azure с помощью C#?

Автор вопроса: SHEKHAR SHETEОтветов: 1

Я новичок в службе хранилища Azure. Поэтому, пожалуйста, рассмотрите текст/код в сообщении. У меня есть несколько файлов, хранящихся на Azure Storage.

Пример:

http://my.blob.core.windows.net/2015/4/10/fea1fc9d-d04102015115229.jpg
http://my.blob.core.windows.net/2015/4/10/asdfc9d-d04102015115229.jpg

Теперь я хочу загрузить эти файлы, используя имя Container/Blob в определенную папку.

DownloadFiles.aspx:

protected void Callme(string sourceURLPath)
    {
        string thumbDirectoryName = string.Empty;
        string sourcePath = sourceURLPath;
        string targetUrl = string.Empty;

        CloudStorageAccount cloudStorageAccount;
        CloudBlobClient blobClient;
        CloudBlobContainer blobContainer;
        BlobContainerPermissions containerPermissions;
        CloudBlob blob;
        cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=" + ConfigurationManager.AppSettings["AzureStorageAccountName"] + ";AccountKey=" + ConfigurationManager.AppSettings["AzureStorageAccountKey"] + "");
 blobClient = cloudStorageAccount.CreateCloudBlobClient();
  blobContainer = blobClient.GetContainerReference(DateTime.Now.Year.ToString());
  blobContainer.CreateIfNotExist();
 containerPermissions = new BlobContainerPermissions();
  containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob;
        blobContainer.SetPermissions(containerPermissions);
//need to get files here and download in to specific folder
}

Какие-либо предложения?

azuredownloadfileazure-cloud-services

Ответы

Ответ 1 · рейтинг 4 · Gaurav Mantri

Ты почти там :). Вот что вам нужно сделать:

  • Сначала вы должны перечислить большие двоичные объекты в контейнере. Для этого вы можете использовать ListBlobs в вашем контейнере. При перечислении больших двоичных объектов убедитесь, что вы передаете prefix как empty string (string.Empty), а useFlatBlobListing как true. Это даст список больших двоичных объектов в вашем контейнере.
  • Затем вы будете перебирать список BLOB-объектов, приводить каждый BLOB-объект к типу CloudBlockBlob, а затем вызывать DownloadToFile для каждого большого двоичного объекта.

Несколько предложений относительно вашего кода:

  • Поскольку вы читаете файлы из контейнера больших двоичных объектов, этот контейнер уже существует. Поэтому не нужно пытаться создавать этот контейнер при каждом запросе. Или другими словами, избавьтесь от этой строки из вашего кода:

    blobContainer.CreateIfNotExist();

  • Точно так же вам не нужны следующие строки кода, потому что все, что вы делаете, это читаете большие двоичные объекты.

    containerPermissions = new BlobContainerPermissions(); containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob; blobContainer.SetPermissions(containerPermissions);

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы