【发布时间】:2011-04-07 14:01:38
【问题描述】:
所以,我使用了一些代码来强制下载我的基于 ASP.Net 的项目。这段代码在 Firefox 和 Chrome 中有效,但在 IE 中却因为某些奇怪的原因而无效。更奇怪的是,它最初适用于所有三个,最近才停止在 IE 中工作。以下是我使用的代码,如果需要进行任何调整或可能存在什么问题,请告诉我。
string path = MapPath(fname);
string name = Path.GetFileName(path);
string ext = Path.GetExtension(path);
string type = "Application/pdf";
Response.AppendHeader("content-disposition","attachment; filename=" + path);
Response.WriteFile(path);
Response.End();
更多细节 这是修改后的代码,仍然不适用于 IE。
string path = MapPath(fname);
string name = Path.GetFileName(path);
string ext = Path.GetExtension(path);
string type = "Application/pdf";
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = type;
Response.AddHeader("content-disposition","attachment; filename=" + path);
Response.WriteFile(path);
Response.End();
【问题讨论】:
-
如果您使用用户提供的文件名,您应该使用System.Net.Mime.ContentDisposition 来构造标题 - 这将正确处理文件名中的空格和非 ASCII 字符。或者,如果这是 MVC,那么您可以使用
return File(...);。
标签: asp.net internet-explorer firefox pdf google-chrome