我正在使用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”中的名称不同,因为我在问题中没有使用真实姓名,但无关紧要。
有人可以帮忙吗?
答案 0 :(得分:0)
试试这个
var sb = new StringBuilder();
sb=GetCsvReportToString(data);
return File(Encoding.UTF8.GetBytes(sb.ToString()), System.Net.Mime.MediaTypeNames.Application.Octet, "ReportCsv.csv");
答案 1 :(得分:0)
这个问题的答案可以在这里找到:https://stackoverflow.com/a/11267754/1417487
对于IE版本6-8,它是关于缓存的标题。