在新页面上做了一个文件下载的方法,通过字节流的形式输出到浏览器,浏览器提示下载,可以成功下载。麻烦的是,下载完成之后如何自动关闭新打开的窗口?相关代码如下:
V_contentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312") ;
Response.AppendHeader("Content-Disposition", "attachment;filename="+ HttpUtility.UrlEncode(V_name));
Response.ContentType = V_contentType;
Response.Clear();
Response.BinaryWrite(V_ByteArray);
V_ByteArray = null;
Response.End();其中V_ByteArray为供下载的二进制字节流;程序执行到Response.End()之后,浏览器便会弹出下载提示框,可以下载或打开。可执行Response.End()之后,不论如何设置关闭当前窗口的代码,都不会执行。请问各位老大们,这样的问题如何解决?

解决方案 »

  1.   

    用javascript应该可以,如果这个弹出的窗口是用javascript弹出的话,就用window.close();就可以了
      

  2.   

    zhangci226(三只熊熊) ,弹出窗口是用javascript做的,在
    Response.End()之前做Response.Write("<script language=javascript>window.close();</javascript>"); 操作还是无效,
    且在前台window.onload()中,做alert('a'),都没反应
    奇怪。
      

  3.   

    我见过的网上下载完了,好像都没有关闭当前窗口唉,你一旦Response.End(),后面的代码就无法执行了
      

  4.   

    查看Response.End()的说明是:
    将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 Application_EndRequest 事件。那么你在可以尝试在这个事件中写一些代码喽
      

  5.   

    是浏览器的原因吧
    换了台机子
    Response.End()之前做Response.Write("<script language=javascript>window.close();</javascript>"); 可以
      

  6.   

    Response.Write("<script language=javascript>window.close();</javascript>");
    这个请用下面的就ok了this.RegisterStartupScript("alert", "<script language=javascript>window.alert('');</script>");
      

  7.   

    Response.End()之前做Response.Write("<script language=javascript>window.close();</javascript>"); 
    是不行的。
    会把“<script language=javascript>window.close();</javascript>“以文本形式写到保存的文件里面,并且窗口不会自动关。