2015-07-13 48 views
0

我有一个对所有人都公开的天蓝色容器,我想检索该公共容器中存在的文件名。无法从azure blob容器获取文件名

这是我的代码。

// Retrieve storage account from connection string. 
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureWebJobsStorage"].ToString()); 

// Create the blob client. 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

// Retrieve reference to a previously created container. 
CloudBlobContainer container = blobClient.GetContainerReference(sourceurl); //my path from where i have to get filename 

//here i got 400 bad request error. 
var blobs = container.ListBlobs(null, true, BlobListingDetails.All).Cast<CloudBlockBlob>().ToList(); 
foreach (var blockBlob in blobs) 
{ 
    Console.WriteLine("Name: " + blockBlob.Name); 
    Console.WriteLine("Size: " + blockBlob.Properties.Length); 
    Console.WriteLine("Content type: " + blockBlob.Properties.ContentType); 
    Console.WriteLine("Download location: " + blockBlob.Uri); 
    Console.WriteLine("======================================="); 
} 
+0

'sourceurl'的价值是什么? –

+0

sourceurl是我从哪里访问我的文件的完整容器地址。例如:“vcmob​​ilesiteiislogs/VCMOBILESITE/2015/07/10/10 /” –

+0

因此,您的容器名称为'vcmob​​ilesiteiislogs',并且您想要从VCMOBILESITE/2015/07/10/10 /'文件夹中提取文件。正确? –

回答

0

根据您的意见,请改变你的代码,类似以下内容:

CloudBlobContainer container = blobClient.GetContainerReference("vcmobilesiteiislogs"); 
var blobs = container.ListBlobs("VCMOBILESITE/2015/07/10/10/", true, BlobListingDetails.All).Cast<CloudBlockBlob>().ToList(); 

本质vcmobilesiteiislogs是你的容器,你想获取斑点的名字,其中开始VCMOBILESITE/2015/07/10/10/(或其他尽管我必须指出blob存储没有文件夹的概念,但您只需通过在blob前添加一个名称来创建文件夹层次结构的错觉即可)。

因此,当您在容器上调用ListBlobs方法时,您将传递VCMOBILESITE/2015/07/10/10/作为blob前缀。

+0

是的它的工作,谢谢你的解决方案 –