所以我有一个文件要上传到 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/

10-11 18:11