Как читать / Загрузить все файлы из контейнера Azure /BLOB-объектов с помощью 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
}

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

1 ответ

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

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

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

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

    blobContainer.CreateIfNotExist ();

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

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

Другие вопросы по тегам