所以我有一个文件要上传到 azure blob 存储:
和两个扩展方法,它们有助于对我的路径进行编码,以确保为其提供有效的 Azure 存储 blob 名称
public static string AsUriPath(this string filePath)
{
return System.Web.HttpUtility.UrlPathEncode(filePath.Replace('\\', '/'));
}
public static string AsFilePath(this string uriPath)
{
return System.Web.HttpUtility.UrlDecode(uriPath.Replace('/', '\\'));
}
因此,当上传文件时,我将其编码为
AsUriPath
并获得名称 test%20folder\A+B\testfile.txt
但是当我尝试将其作为文件路径取回时,我得到 test folder\A B\testfile.txt
显然不一样(+
已被删除)使用 UrlEncode 和 UrlDecode 以确保获得与原始编码相同的信息解码的正确方法是什么?
最佳答案
如果您使用 WebUtility.UrlEncode
而不是 HttpUtility.UrlPathEncode
,它会起作用
如果您查看 docs on HttpUtility.UrlPathEncode,您会看到它指出:
我编写了一个简单的示例,可以将其粘贴到控制台应用程序中(您需要引用 System.Web 程序集)
static void Main(string[] args)
{
string filePath = @"C:\test folder\A+B\testfile.txt";
var encoded = WebUtility.UrlEncode(filePath.Replace('\\', '/'));
var decoded = WebUtility.UrlDecode(encoded.Replace('/', '\\'));
Console.WriteLine(decoded);
}
在这个 .NET Fiddle 上运行它
关于c# - 如何正确使用 UrlEncode 和 Decode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27817266/