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

解决方案 »

  1.   

    看看是不是ie出问题了,ie经常出怪问题。搂住问题我遇到过,重启解决。
    你不妨去其他机器上试试。
      

  2.   

    给你个函数,你在page_load里判断下,如果不能直接在网页显示,就调用这个下载
    把文件名(带路径)和你下载显示的文件标题作为参数传入就行 private void DownLoad(string filepath, string filetitle) 
    {
        System.IO.FileInfo fi=new System.IO.FileInfo(filepath);        
        System.Web.HttpContext.Current.Response.Clear();
        System.Web.HttpContext.Current.Response.ClearHeaders();
        System.Web.HttpContext.Current.Response.Buffer = false;
        System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
        System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filetitle, System.Text.Encoding.UTF8));
        System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", fi.Length.ToString());
        System.Web.HttpContext.Current.Response.WriteFile(fi.FullName);
        System.Web.HttpContext.Current.Response.Flush();
        System.Web.HttpContext.Current.Response.End();
    }
      

  3.   

    添加这样一句话Response.AppendHeader("Content-Disposition","attachment;filename=aa.xls"); 
    filename=aa.xls
    表示打开/保存/取消的文件名
      

  4.   

    图片下载
    public void SavePhotoFromUrl(string address, string FileName)
        {
            System.Net.WebClient wc = new System.Net.WebClient();
            try
            {
                wc.DownloadFile(address, FileName);
                Response.Write("<script>alert('远程文件已经下载完毕!地址为" + filename + "')</script>");
            }
            catch (System.Exception ex)
            {
                Response.Write("error:" + ex.Message.ToString());
            }
        }不过对于这些上传下载之类的操作,我个人建议的话,用户上传LZ可以处理下在线压缩。除rar zip外,其他的图片格式文本格式的都打成rar
    这样不仅压缩了体积,减少了服务器的硬盘空间外,诸如一些病毒之类的也不会侵害到服务器。
      

  5.   

    用朋友的机器也不行,我用的IE7,他IE6,只有FireFox可以...郁闷了,但是不管什么浏览器只要按住CTRL键不放,就能正常下载,是不是杀毒软件的原因?
      

  6.   

    我知道maxthon按住ctrl可以阻止弹出窗口
    其他不清楚
      

  7.   

    有解的话发我一份,
    [email protected]
    qq:721787
    拜托了