如何删除带编码名称的azure blob?

时间:2014-11-06 20:08:27

标签: c# azure-storage-blobs

我在azure存储上有一堆blob,其名称遵循以下模式:<someName>_DateTimeOffset.UtcNow。当我使用container.ListBlobs()获取blob时,blob Uri看起来像这样:<someName>__11%252f3%252f2014+10%253a00%253a00+PM+%252b00%253a00+%252b00%253a00

如果仔细观察,%25在编码一次后变为%%2f变为:。因此看起来Uri经历了双重编码。

当我试图抓住这个blob时,它不起作用。以下是代码段:

BlobResultSegment resultSegment = await container.ListBlobsSegmentedAsync("myPrefix", true, BlobListingDetails.All, 10, null, null, null);
var list = resultSegment.Results.Select(x => x.Uri.ToString().Split('/').Last());
var blob = container.GetBlockBlobReference(blobName);
blob.FetchAttributes();
foreach (var element in list)
        {
            var blob = container.GetBlockBlobReference(element);

            blob.FetchAttributes();
            var t = blob.Metadata;
        }

任何想法在尝试访问URL之前如何对URL进行编码?

注意:我使用最新的azure存储库

1 个答案:

答案 0 :(得分:0)

我们可以将ListBlob结果转换为ICloudBlob并在其上调用delete,而不是尝试获取blob引用。这是代码:

var l= resultSegment.Results.Select(x => x as ICloudBlob);
foreach (var cloudBlob in l)
        {
            cloudBlob.Delete();
        }