碰到一个奇怪的问题,我有一个下载的页面,接收下载的ID,如果程序会根据此ID取得文件的真实路径,然后就用Response.Redirect到用户的窗口重定向到真实的下载地址,如果是IE能直接显示的格式(如网页,图片等)就应该在IE中直接显示此文件的内容,如果是IE不能直接显示的格式(如zip,exe)等应该提示用户下载。但我碰到的问题是,当我使用IE来访问下载页面时,如果下载文件的格式是txt等,没有问题,文件内容直接显示在了IE中,但如果文件格式是zip时,没有出现预期的提示打开/保存/取消的对话框,而是浏览器窗口闪一下之后就自动关闭了,什么都没有。而如果使用Firefox则一切正常。有人碰到过类似的问题吧?先谢了。

解决方案 »

  1.   

    FileInfo DownloadFile = new FileInfo(FullFileName);
            if (DownloadFile.Exists)
            {
                Response.Clear();
                Response.ClearHeaders();
                Response.Buffer = false;
                Response.ContentType = "application/octet-stream";
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(targetFileName, System.Text.Encoding.UTF8));
                Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
                Response.WriteFile(DownloadFile.FullName);
                Response.Flush();
                Response.End();
            }
            else
            {
                throw new Exception("文件不存在或路径设置不正确。");
            }
      

  2.   

    谢谢楼上的朋友的代码,不过这段代码好像是应用于强制下载的情况吧?我的应用里面还不需要强制下载,如果是网页,图片等就直接显示出来,如果是zip等才让IE去提示下载。
      

  3.   

    你直接在页面上用link来指向zip是否可以在IE中进行下载。
      

  4.   

    你说的.zip格式是不是在iis服务器的mime类型中没有配置?配置为application/x-zip-compressed 试试
      

  5.   

    谢谢楼上两位朋友的回复。只要跳转不是自动完成就没有问题,放置一个link来下载的方法是可行的。现在基本可以确认这是IE中的Flash插件的一个bug,因为我这个链接是在Flash中用getURL这个命令来打开的,我的主贴里没有提到这一点因为当时没料到可能是flash的问题。在Firefox中一切正常,因此不会是mime的原因。
      

  6.   

    明显是浏览器的BUG,导致浏览器崩溃。