0
我有一堆在azure存储上的blob,它遵循以下模式中的名称:<someName>_DateTimeOffset.UtcNow
。当我使用container.ListBlobs()
获取blob时,blob Uri如下所示:<someName>__11%252f3%252f2014+10%253a00%253a00+PM+%252b00%253a00+%252b00%253a00
。如何删除编码名称的天蓝色blob?
如果你仔细观察,%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存储库
这样的回答可以帮助:http://stackoverflow.com/questions/1405048/how-do-i-decode-a-url-parameter-using-c你可能只需要解码一次,但尝试两次,如果它不起作用。 (请参见http://msdn.microsoft.com/en-us/library/system.net.webutility.urlencode(v=vs.110).aspx for nonASP.net回答) – dodald 2014-11-06 20:15:17
已尝试WebUtility.UrlDecode(WebUtility。 UrlDecode(blobName)),WebUtility.UrlDecode(blobName),HttpUtility.UrlDecode(blobName)等,他们都没有工作。不太确定内部是如何表示blob名称的。 – Amit 2014-11-06 20:36:47