获取winRt应用程序中的blob列表

Via*_*lav 2 c# azure windows-8

我想在容器中列出blob.对于桌面应用程序,Azure Storage SDK提供以下方法:

CloudBlobContainer container = blobClient.GetContainerReference("myBlob"); 
container.ListBlobs();
Run Code Online (Sandbox Code Playgroud)

但是,使用WinRT库时,该方法不存在(可能是由于其阻塞性质).我应该用什么呢?

Gau*_*tri 6

您需要使用ListBlobsSegmentedAsyncblob容器上的函数来获取blob列表.请参阅以下代码,例如:

    CloudStorageAccount account = new CloudStorageAccount(new StorageCredentials("accountname", "accountkey"), true);
    var client = account.CreateCloudBlobClient();
    var container = client.GetContainerReference("containername");
    BlobContinuationToken continuationToken = null;
    string prefix = null;
    bool useFlatBlobListing = true;
    BlobListingDetails blobListingDetails = BlobListingDetails.All;
    int maxBlobsPerRequest = 10;
    List<IListBlobItem> blobs = new List<IListBlobItem>();
    do
    {
        var listingResult = await container.ListBlobsSegmentedAsync(prefix, useFlatBlobListing, blobListingDetails, maxBlobsPerRequest, continuationToken, null, null);
        continuationToken = listingResult.ContinuationToken;
        blobs.AddRange(listingResult.Results);
    }
    while (continuationToken != null);
Run Code Online (Sandbox Code Playgroud)

  • 由于blob存储服务是基于Internet的服务,因此您不会在单个请求中获取blob容器中的所有blob.Blob存储服务在单个请求中最多返回5000个blob.如果blob容器中有超过5000个blob,则该服务返回一个令牌,您可以使用该令牌获取下一组blob.那是'BlobContainuationToken`.您可以使用`prefix`来获取以特定`前缀`开头的blob的部分列表.例如,如果您只想获取以字母"a"开头的blob,则应将其指定为前缀.HTH. (2认同)