文件名和mime问题-ASP.NET下载文件(C#)

文件名和mime问题-ASP.NET下载文件(C#),c#,asp.net,file,download,transmitfile,C#,Asp.net,File,Download,Transmitfile,我在ASP.NET应用程序中遇到了一个非常奇怪的问题 当用户单击下载文件的按钮时,Internet Explorer/Chrome/Firefox会显示保存对话框,但文件名是ASPX页面的名称(例如,如果页面名为Download.ASPX,则下载对话框会显示“file”Download.zip)。有时,在玩MIME类型时,下载对话框显示“download.aspx”。似乎您正在尝试下载该页面,但实际上是正确的文件 这种情况发生在ZIP扩展中,下面是我的代码(我认为是相当标准的): GetCont

我在ASP.NET应用程序中遇到了一个非常奇怪的问题

当用户单击下载文件的按钮时,Internet Explorer/Chrome/Firefox会显示保存对话框,但文件名是ASPX页面的名称(例如,如果页面名为Download.ASPX,则下载对话框会显示“file”Download.zip)。有时,在玩MIME类型时,下载对话框显示“download.aspx”。似乎您正在尝试下载该页面,但实际上是正确的文件

这种情况发生在ZIP扩展中,下面是我的代码(我认为是相当标准的):

GetContentType函数只返回文件的MIME。我尝试了应用程序/x-zip-compressed多部分/x-zip,当然还有应用程序/zip。使用application/zip Internet Explorer 8显示XML错误

非常感谢您对我们的任何帮助


您好,

我认为类似于
Response.Redirect(ResolveUrl(file.FullName))
而不是
Response.TransmitFile(file.FullName)
是您想要的。听起来您实际上希望他们的浏览器指向该文件,而不仅仅是将该文件作为对当前请求的响应进行传输

编辑:也可以看到这个问题


更新:根据您的反馈,我认为这是您想要的。

我正在查看我为处理类似机制所做的工作,以下是我正在执行的步骤(粗体项目似乎是唯一真正的区别):

Response.Clear();
AddHeader(“内容处置”,string.Format(“附件;文件名={0}”,文件名));
Response.ContentType=“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”//Excel 2007格式
// ... 做工作。。。
AddHeader(“Content-Length”,outputFileInfo.Length.ToString());
TransmitFile(outputFileInfo.ToString());
HttpContext.Current.Response.End();// 用于Excel导出

   Response.AddHeader("content-disposition", string.Format("attachment; filename={0}.xls", fileName));
IE和Firefox对我很有用

Response.Clear();
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // Excel 2007 format
// ... doing work...
Response.AddHeader("Content-Length", outputFileInfo.Length.ToString());
Response.TransmitFile(outputFileInfo.ToString());
HttpContext.Current.Response.End(); // <--This seems to be the only major difference
   Response.AddHeader("content-disposition", string.Format("attachment; filename={0}.xls", fileName));