C# Response.AddHeader(“内容处置”)未在IE6中打开文件

C# Response.AddHeader(“内容处置”)未在IE6中打开文件,c#,asp.net,download,C#,Asp.net,Download,我使用的是Response.AddHeader(“内容处置”、“附件;文件名=“+Server.HtmlEncode(文件名));为用户弹出“打开/保存文件”对话框,以便他们可以将文件下载到本地计算机上 这在IE7中正常工作,但在IE6中,当用户单击“打开/保存文件”对话框中的“打开”按钮时,文件未打开。我通过网络发现 AddHeader(“内容处置”、“内联;文件名=“+Server.HtmlEncode(文件名)); 应在IE6中提供,且其工作良好 但问题是,大多数可以在浏览器中打开的文件都

我使用的是Response.AddHeader(“内容处置”、“附件;文件名=“+Server.HtmlEncode(文件名));为用户弹出“打开/保存文件”对话框,以便他们可以将文件下载到本地计算机上

这在IE7中正常工作,但在IE6中,当用户单击“打开/保存文件”对话框中的“打开”按钮时,文件未打开。我通过网络发现 AddHeader(“内容处置”、“内联;文件名=“+Server.HtmlEncode(文件名)); 应在IE6中提供,且其工作良好

但问题是,大多数可以在浏览器中打开的文件都是在页面本身上打开的。。ie用户在一个邮件页面上,点击下载一个它在那里打开的图像文件,我需要它在另一个窗口中打开,就像IE7一样,我能做什么。。。无法在bowser中打开的其他文件在系统ie(word、excel等)中使用当前应用程序打开

请建议一种方法,坚持为两个IE相同的代码。。。我使用的代码在这里

Response.AddHeader("Content-Disposition", "attachment; filename=" +FileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = ReturnExtension(file.Extension.ToLower());
Response.TransmitFile(file.FullName);
Response.End();

 private string ReturnExtension(string fileExtension)
    {
        switch (fileExtension)
        {
            case ".txt":
                return "text/plain";
            case ".doc":
                return "application/ms-word";
            case ".xls":
                return "application/vnd.ms-excel";
            case ".gif":
                return "image/gif";
            case ".jpg":
            case "jpeg":
                return "image/jpeg";
            case ".bmp":
                return "image/bmp";
            case ".wav":
                return "audio/wav";
            case ".ppt":
                return "application/mspowerpoint";
            case ".dwg":
                return "image/vnd.dwg";
            default:
                return "application/octet-stream";
        }
    }

尝试将内容类型设置为八位字节流:

Response.ContentType = "application/octet-stream";

我在IE6中发现了问题,我们必须在IE6中读取内容并使用缓冲区和二进制写入来打开文件,下面的代码在IE6中对我来说很好

FileStream sourceFile = new FileStream(Server.MapPath(@"FileName"), FileMode.Open);
float FileSize;
FileSize = sourceFile.Length;
byte[] getContent = new byte[(int)FileSize];
sourceFile.Read(getContent, 0, (int)sourceFile.Length);
sourceFile.Close();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = ReturnExtension(file.Extension.ToLower());
Response.AddHeader("Content-Length", getContent.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.BinaryWrite(getContent);
Response.Flush();
Response.End();

为什么要对文件名进行HTML编码?HTTP头不是HTML.yh itz这是一个错误,我已经删除了它,但它不能解决问题。我从你的部分问题中得到了我的解决方案,谢谢:)