繁体   English   中英

Response.AddHeader(“Content-Disposition”)不在IE6中打开文件

[英]Response.AddHeader(“Content-Disposition”) not opening file in IE6

我正在使用Response.AddHeader(“Content-Disposition”,“attachment; filename =”+ Server.HtmlEncode(FileName)); 为用户弹出“打开/保存文件”对话框,以便他们可以将文件下载到本地计算机上。

这通常在IE7中运行良好,但在IE6上,当用户单击“打开/保存文件”对话框中的打开按钮时,文件无法打开。 我浏览了网络,发现了Response.AddHeader(“Content-Disposition”,“inline; filename =”+ Server.HtmlEncode(FileName)); 应该提供IE6中的工作,它的工作正常..

但问题是大多数可以在浏览器中打开的文件在页面本身打开..即用户在邮件页面上并单击下载它打开的图像文件,我需要它在IE7的情况下在另一个窗口中打开我该怎么做...其他文件无法在系统中使用当前应用程序打开,即(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";
        }
    }

我在IE 6中发现了问题我们必须在IE 6中读取内容并使用缓冲区和二进制写入打开文件,下面的代码在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();

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM