我是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
}
有什么建议吗?
答案 0 :(得分:4)
你几乎就在那里:)。以下是您需要做的事情:
ListBlobs
方法。列出blob时,请确保将prefix
作为empty string (string.Empty)
和useFlatBlobListing
作为true
传递。这将给出容器中的blob列表。CloudBlockBlob
,然后在每个blob上调用DownloadToFile
方法。关于您的代码的一些建议:
由于您正在从blob容器中读取文件,因此该容器已经存在。因此,无需尝试在每个请求上创建该容器。换句话说,从代码中删除这一行:
blobContainer.CreateIfNotExist();
同样,您也不需要以下代码行,因为您所做的只是阅读blob。
containerPermissions = new BlobContainerPermissions(); containerPermissions.PublicAccess = BlobContainerPublicAccessType.Blob; blobContainer.SetPermissions(containerPermissions);