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

Я новичок в службе хранилища 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
}

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


person SHEKHAR SHETE    schedule 06.05.2015    source источник


Ответы (1)


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

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

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

    blobContainer.CreateIfNotExist();

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

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

person Gaurav Mantri    schedule 07.05.2015
comment
привет @Gaurav Mantri, на самом деле в лазури много контейнеров, поэтому я хочу получить все контейнеры в лазури и все файлы в каталоге и подкаталоге, которые нужно загрузить в локальную папку? Не могли бы вы добавить пример кода для вышеуказанного требования? - person SHEKHAR SHETE; 07.05.2015
comment
См. это в отношении того, как получить все контейнеры из учетной записи хранения: stackoverflow.com/questions/30076886/. - person Gaurav Mantri; 07.05.2015