我正在使用此代码将文件返回给客户端
return new FileContentResult(Encoding.UTF8.GetBytes(sb.ToString()), MimeType)
{
FileDownloadName = String.Format("{0}.csv", fileName)
};
当文件名为ascii格式时,它会起作用,但当文件名包含国际字符时,它将返回Action的名称
例如,如果filename为Report 新しいレポート
,则下载的文件是没有任何扩展名的Action名称。
这将在Chrome中发生,即在Firefox中下载文件但会更改某些字符
Firefox:Report2%0d%0a ��しいレポート_2016-03-09_09-20-35.c%0d%0a sv
答案 0 :(得分:1)
对于遇到同样问题的人:
var browser = System.Web.HttpContext.Current.Request.Browser.Browser;
if (browser == "Chrome" || browser == "IE" || browser == "InternetExplorer")
{
fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);
}
return new FileContentResult(Encoding.UTF8.GetBytes(sb.ToString()), MimeType)
{
FileDownloadName = String.Format("{0}.csv", fileName)
};