文件名中的文件内容结果和国际字符



我正在使用此代码将文件返回给客户端

return new FileContentResult(Encoding.UTF8.GetBytes(sb.ToString()), MimeType)
            {
                FileDownloadName = String.Format("{0}.csv", fileName)
            };

当文件名为 ASCII 格式时,它可以工作文件,但当文件名包含国际字符时,它将返回操作的名称

例如,如果文件名为Report 新しいレポート则下载的文件是操作的名称,不带任何扩展名。

更新

这将发生在 Chrome 中,即在 Firefox 中下载文件但更改了一些字符

火狐:Report2%0d%0a ��しいレポート_2016-03-09_09-20-35.c%0d%0a sv

对于有相同问题的人:

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)
};

最新更新