从FileResult下载文件而不保存到磁盘

我正在使用MVC 4。

我的控制器中有一个方法可以按需生成CSV文件,我希望用户可以下载该文件,而无需将其保存到服务器端的磁盘上。 所以我在File()对象上传递一个MemoryStream,以避免首先将文件保存到磁盘,然后给他下载路径。

控制器方法:

[HttpGet] public ActionResult GenerateCsv(string data) var sb = new StringBuilder(); sb = GetCsvReportToString(data); var stream = new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString())); return this.File(stream, "text/csv", "ReportCsv.csv"); } 

sb(StringBuilder)具有正确的数据,因为我已经调试并确认了它。

我的javascript代码:

 window.open(generateFileLink + '?data=' + dataToSend, '_blank'); 

该窗口实际上已打开,下载对话框出现但出现错误,表示无法从localhost下载:

在此处输入图像描述

名称在下载“ReportToCsv”中有所不同,因为我在问题中没有使用真实姓名,但无关紧要。

有人可以帮忙吗?

试试这个

 var sb = new StringBuilder(); sb=GetCsvReportToString(data); return File(Encoding.UTF8.GetBytes(sb.ToString()), System.Net.Mime.MediaTypeNames.Application.Octet, "ReportCsv.csv"); 

这个问题的答案可以在这里找到: https : //stackoverflow.com/a/11267754/1417487

对于IE版本6-8,它是关于缓存的标题。