使用GetBlockBlobReference()时如何避免角色转换?

时间:2018-05-29 02:19:20

标签: azure azure-storage

当我使用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

1 个答案:

答案 0 :(得分:3)

blob名称必须符合以下命名规则:

  

blob名称可以包含任意字符组合。

     

blob名称长度必须至少为一个字符且长度不能超过1,024个字符。

     

Blob名称区分大小写。

     

必须正确转义保留的网址字符。

     

包含blob名称的路径段数不能超过254.路径段是连续分隔符之间的字符串(例如正斜杠'/'),它对应于虚拟目录的名称。

enter image description here

不同于reserved character is percent-encoded或字面上出现的URI通常被认为不等同(表示相同的资源),除非可以确定所讨论的保留字符没有预留目的。

这是A Complete Guide to URL Escape Characters