HTML 使用 MVC FileResult 下载的文件从服务器下载时看起来不一样

HTML file download using MVC FileResult looks different when downloading from server

我写了一些 Asp.Net MVC 代码,returns 一个 Html 文件 FileResult。

 var stream = new MemoryStream();
 var writer = new StreamWriter(stream);
 writer.Write(htmlReport);
 writer.Flush();
 stream.Position = 0;

 return File(stream, "text/html", fileName);

使用我的本地环境,HTML 文件在打开时看起来很好,但在部署到服务器并下载同一文件后,可以看到一些不需要的字符。服务器环境的差异如何影响下载到用户电脑的文件?

您需要指定文件编码。您很可能使用的是 UTF8,但也可以使用其他格式。

var writer = new StreamWriter(stream, System.Text.Encoding.UTF8);

为什么要使用 StreamWriter

return Content(htmlReport, "text/html", System.Text.Encoding.UTF8);

或者,如果您想使用 File 作为 return 结果,请尝试:

byte[] bArray = System.Text.Encoding.UTF8.GetBytes(htmlReport);
return File(bArray, "text/html", fileName);