当前位置:  开发笔记 > 后端 > 正文

为什么Content-Disposition标头在IE 8中不起作用?

如何解决《为什么Content-Disposition标头在IE8中不起作用?》经验,为你挑选了1个好方法。

我正在尝试将文本文件(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();

bobince.. 9

Response.AddHeader("Content-Disposition", "filename=" + GetExportFileName());

应该:

Response.AddHeader("Content-Disposition", "attachment;filename=" + GetExportFileName());

没有主Content-Disposition值,IE将只使用URL的尾部  something.aspx - 作为文件名.

(上面假设GetExportFileName()返回一个被删除大多数标点符号的清理文件名.在IE中使用标题参数作为标记或带引号的字符串是一个令人烦恼的问题 ;有关详细信息,请参阅此问题)



1> bobince..:
Response.AddHeader("Content-Disposition", "filename=" + GetExportFileName());

应该:

Response.AddHeader("Content-Disposition", "attachment;filename=" + GetExportFileName());

没有主Content-Disposition值,IE将只使用URL的尾部  something.aspx - 作为文件名.

(上面假设GetExportFileName()返回一个被删除大多数标点符号的清理文件名.在IE中使用标题参数作为标记或带引号的字符串是一个令人烦恼的问题 ;有关详细信息,请参阅此问题)

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有