c#MVC路径中的非法字符

Smi*_*thy 2 c# csv asp.net-mvc

我正在生成一个CSV文件,并尝试使用MVC将其发送到线路,但我一直得到Illegal characters in path异常.

我尝试过使用不同的方法,例如引用列,更改\n Environment.NewLine但是问题的原因仍然无法解决.

控制器代码:

string csv = "";
csv = "Name, Sales, Qty, Cost, Profit" + "\n";
foreach (var item in model.ReportResults.Items) {
    csv += item.ToCsv();
}

return File(csv, "text/csv", "myfile.csv");
Run Code Online (Sandbox Code Playgroud)

ToCsv方法:

internal string ToCsv() 
{
    return "" + Name + "" + "," + Sales.ToString() + "," + Qty.ToString() + "," + Cost.ToString() + "," + Profit.ToString() + "\n";
}
Run Code Online (Sandbox Code Playgroud)

生成的CSV文件的快照:

Name, Sales, Qty, Cost, Profit
Tyranids,4979.29,182,3375.00,1604.29
Space Marines,2127.88,87,948.09,1179.79
Tau Empire,1584.01,40,0.00,1584.01
Eldar,1164.04,44,925.38,238.66
Imperial Guard,1005.79,34,790.10,215.69
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 10

你正在使用错误的重载File(). csv是一个字符串,告诉它您正在查找该名称的文件.当然,您的整个CSV数据都不是有效的文件名,因此错误.

您希望将a返回byte[]为"文件"的实际内存数据,而不是字符串.也许是这样的:

var csvBytes = Encoding.ASCII.GetBytes(csv);
return File(csvBytes, "text/csv", "myfile.csv");
Run Code Online (Sandbox Code Playgroud)

(或者您想要使用的任何字符编码.)