我正在尝试将文本文件 (CSV) 流式传输到响应,并且以下代码在 Firefox 3 中完美运行,但是当我使用 IE 时,它看起来想要下载实际的 .aspx 页面,并抱怨该文件内容与文件扩展名或类型不匹配。如果我随后选择下载该文件,它会正确下载 CSV 数据并在 Excel 中打开它。我究竟做错了什么?
DataTable dt = ExtensionsProvider.ListPrivateCallCostsForCsv(reportFilter.BusinessUnit, reportFilter.StartDate,
reportFilter.EndDate);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "text/csv";
Response.AddHeader("Content-Disposition", "filename=" + GetExportFileName());
DataTableHelper.WriteCsv(dt, Response.Output, false);
Response.End();
Response.AddHeader("Content-Disposition", "filename=" + GetExportFileName());
应该:
Response.AddHeader("Content-Disposition", "attachment;filename=" + GetExportFileName());
没有主线Content-Disposition
值,IE 将只使用 URL 的尾部 —something.aspx
— 作为文件名。
(以上假设GetExportFileName()
返回删除了大部分标点符号的清理文件名。在 IE 中,标头参数中可以包含哪些内容作为标记或带引号的字符串,这是一个令人烦恼的问题;看这个问题详情)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)