当我使用Microsoft Azure的云块blob的方法GetBlockBlobReference()
时,我发现它会将某些字符转换为#23%23.这不是我想要的。我怎么能避免这个?
代码段如下:
string pvtFileName = "pvt/" + fileName.Replace(StlFilePostfix, PvtFilePostfix);//the name contains #
BlobRequestOptions bl = new BlobRequestOptions();
bl.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(50), 6);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
var blobContainerPVT = blobClient.GetContainerReference(smodContainer.ToLower());
blobContainerPVT.CreateIfNotExists();
try
{
CloudBlockBlob pvtBlob = blobContainerPVT.GetBlockBlobReference(pvtFileName);
using (var fileStream = File.OpenRead(fileFullPath.Replace(StlFilePostfix, PvtFilePostfix)))
{
pvtBlob.UploadFromStream(fileStream, null, bl);
}} catch (Exception e)
{
Trace.TraceInformation(e.Message);
}
无论我使用HttpUtility.UrlEncode()格式化文件名,该方法都会将#转换为%23
答案 0 :(得分:3)
blob名称必须符合以下命名规则:
blob名称可以包含任意字符组合。
blob名称长度必须至少为一个字符且长度不能超过1,024个字符。
Blob名称区分大小写。
必须正确转义保留的网址字符。
包含blob名称的路径段数不能超过254.路径段是连续分隔符之间的字符串(例如正斜杠'/'),它对应于虚拟目录的名称。
不同于reserved character is percent-encoded或字面上出现的URI通常被认为不等同(表示相同的资源),除非可以确定所讨论的保留字符没有预留目的。