HttpContext.Current.Response.Clear();
System.IO.Stream iStream=myPro.GetProductData(idstr,false,UserConfig.Config_CardGln[0]);
iStream.Seek(0,System.IO.SeekOrigin.Begin);
HttpContext.Current.Response.ContentType="application/zip";
HttpContext.Current.Response.AddHeader("Content-Length", iStream.Length.ToString());
HttpContext.Current.Response.AddHeader("content-disposition","attachment;filename="AA.xml",System.Text.Encoding.UTF8));
int len=1;
while(len>0) 
{
byte[] buffer=new Byte[65532];
len = iStream.Read(buffer,0,65532);
HttpContext.Current.Response.OutputStream.Write(buffer,0,len);
HttpContext.Current.Response.Flush();
}
iStream.Close();
HttpContext.Current.Response.End();我想以上这段程序大家都可以看得懂。现在奇怪的问题出来了当我点击一个按钮下载这个文件后,如果不保存一点事情都没有,如果保存,那么这个页面上的所有的javascript程序全部不能用了!!!请问这是什么原因引起的?是由于我HttpContext.Current.Response.Clear();了吗?有什么好方法没有请大家指点下阿。。

解决方案 »

  1.   

    HttpContext.Current.Response.End();
    应该是这句的过,你结束了输出,肯定会影响到客户端的代码,你先屏蔽掉它看看。
      

  2.   

    测试:注释HttpContext.Current.Response.End();不行关键要分析下原因,是为什么?
      

  3.   

    private void Button1_Click(object sender, System.EventArgs e)
    {
    HttpContext.Current.Response.Clear();
    System.IO.Stream iStream= new System.IO.MemoryStream();//myPro.GetProductData(idstr,false,UserConfig.Config_CardGln[0]);
    iStream.Seek(0,System.IO.SeekOrigin.Begin);
    HttpContext.Current.Response.ContentType="application/zip";
    HttpContext.Current.Response.AddHeader("Content-Length", iStream.Length.ToString());
    HttpContext.Current.Response.AddHeader("content-disposition","attachment;filename=\"AA.xml\"");
    //System.Text.Encoding.UTF8));
    int len=1;
    while(len>0) 
    {
    byte[] buffer=new Byte[65532];
    len = iStream.Read(buffer,0,65532);
    HttpContext.Current.Response.OutputStream.Write(buffer,0,len);
    HttpContext.Current.Response.Flush();
    }
    iStream.Close();
    HttpContext.Current.Response.End();
    }运行正常啊。你的js是动态添加到页面上的吗?
      

  4.   

    估计你的JS是在page_load里面添加的.
      

  5.   

    没有啊我可以肯定地告诉大家,我的js不是在page_load放的。
    实际上我的整个页面是这样的。页面是个框架。左边是菜单,右边是内容,当点击右边的下载后并且保存后,左边导航菜单的所有的链接效果丢失,右边内容你的脚本信息丢失。。
    如果不点击保存,那么整个页面都是正常的~~~~~~~~~~~~~~
    我的js是直接放到页面上的。
      

  6.   

    给出测试页面请高手给看看
    http://211.219.23.6:100/search/index.HTM
      

  7.   

    刚刚这个地址敲错了。正确的地址是:
    http://219.234.93.6:100/search/index.HTM
      

  8.   

    在ie和myie下均测试正常测试步骤
    打开页面-》取消高级搜索-》搜索-》操作列选中一项-》下载-》保存-》再次选择-》js正常工作
      

  9.   

    问题在这里面HttpContext.Current.Response.ContentType="application/zip";
    这个语句,是改变当前页面的头部标志,改变之后,此页面即转为输出文件的页面,不再是ContentType="html/text"格式了
    你认为,能在WORD中运行JS脚本吗?不能.
    同样的,你也不能在非html文件中运行JS脚本.
      

  10.   

    奇怪。我用的window 2003 server 就有问题。2003下的ie版本:6.03790.0但是用的xp就没有问题。xp下的ie版本:6.02900.00怎么办??都是6.0的阿
      

  11.   

    在javascript不能用的时候,查看页面的输出html,看看是函数定义没了还是对函数的调用没了,有助分析问题。
    我这里正常
      

  12.   

    实际上点击下载以后,整个页面的什么内容都是没有变化的我这里的状态就是,保存后javascript不能运行,如果不保存javascript一切正常!难道ie受保存内容影响?
    你们用的是2003带的IE吗?
      

  13.   

    ContentType="application/zip";
    改过之后,javascript当然不行了在一个网页中,你只使用一种格式输出数据,
    要用zip就不能再用html方式。
      

  14.   

    if(!System.IO.File.Exists(strFile))
    {
    Response.Write("<script language='javascript'>alert('对不起,文件不存在!');</script>");
    return;
    }
    Response.Clear();
    Response.ClearHeaders();
    Response.Charset = "GB2312";
    Response.ContentEncoding =System.Text.Encoding.UTF8;
    Response.ContentType = "application/octet-stream"; 
    FileInfo fi=new FileInfo(strFile);
    Response.AddHeader("Content-Disposition","attachment;  filename="  +  HttpUtility.UrlEncode(fi.Name)) ;
    Response.AddHeader("Content-Length",fi.Length.ToString());
    byte[] tmpbyte=new byte[1024*8];
    FileStream fs=fi.OpenRead();
    int count;
    while((count=fs.Read(tmpbyte,0,tmpbyte.Length))>0)
    {
    Response.BinaryWrite(tmpbyte);
    Response.Flush();
    }
    fs.Close();
    Response.End();
      

  15.   

    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
    不要用Response.Write,
      

  16.   

    to: sunnystar365(淡淡忧伤)  这个方法还是不行。
    to: fengfangfang()  为什么有些人一切正常???如果要是你说的这个错误的话,应该所有的客户端出现一样的错误,而为什么象fancyf(凡瑞) 这样的客户端就没有问题了?这说明你的解释是说不过去的。
    同样在我这得问题是,如果在框架中就会出现我说的问题,而如果这个下载页面放在单独的页面中就没有任何问题。如果点击下载出现保存的提示框而不保存也么没有问题(备注:只有在保存后出现问题)to:codeangel 请问是在那儿不要用Response.Write??是HttpContext.Current.Response.BinaryWrite(buffer); 吗?
      

  17.   

    不要这个HttpContext.Current.Response.Flush();
      

  18.   

    看来应该是IE版本或者操作系统的问题,你可以先给IE打下补丁试试。