Как читать / Загрузить все файлы из контейнера 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);