我在下载文件名中包含+字符的文件时收到错误。
在我的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编码?
如何解决此问题?
答案 0 :(得分:0)
有一些特殊字符表示URL中的特定内容。如果角色是URL本身的一部分而不应具有这样的含义,那么它必须是URL-encoded:
b51535d5-4ea3-45ae-bda4-332a0ce19ee8TopDogg%2BGomez.jpg