如何处理URL文件名中的+标志

时间:2015-03-08 00:46:57

标签: c#

我在下载文件名中包含+字符的文件时收到错误。

在我的c#MVC Web应用程序中,我有一个页面,其中包含下载图像的链接。

我从数据库中检索文件名,然后将其传递给我的控制器以处理下载。

由于+字符,此特定文件名生成错误。

b51535d5-4ea3-45ae-bda4-332a0ce19ee8TopDogg + Gomez.jpg

在调试应用程序时,我注意到发送到控制器的文件名不包含+号,而是有空格。

这导致服务器返回未找到文件错误

public ActionResult DownloadImageFile(string filename)
{
    filename = "https://marvment.com/" + filename;

    var type = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
    var path = Path.GetFileName(filename);

    using (var client = new WebClient())
    {
        var buffer = client.DownloadData(filename);
        return File(buffer, type.ToString(), path);
    }
}

如何防止文件名被beign url编码?

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

有一些特殊字符表示URL中的特定内容。如果角色是URL本身的一部分而不应具有这样的含义,那么它必须是URL-encoded

b51535d5-4ea3-45ae-bda4-332a0ce19ee8TopDogg%2BGomez.jpg