在新页面上做了一个文件下载的方法,通过字节流的形式输出到浏览器,浏览器提示下载,可以成功下载。麻烦的是,下载完成之后如何自动关闭新打开的窗口?相关代码如下:
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()之后,不论如何设置关闭当前窗口的代码,都不会执行。请问各位老大们,这样的问题如何解决?
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()之后,不论如何设置关闭当前窗口的代码,都不会执行。请问各位老大们,这样的问题如何解决?
Response.End()之前做Response.Write("<script language=javascript>window.close();</javascript>"); 操作还是无效,
且在前台window.onload()中,做alert('a'),都没反应
奇怪。
将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 Application_EndRequest 事件。那么你在可以尝试在这个事件中写一些代码喽
换了台机子
Response.End()之前做Response.Write("<script language=javascript>window.close();</javascript>"); 可以
这个请用下面的就ok了this.RegisterStartupScript("alert", "<script language=javascript>window.alert('');</script>");
是不行的。
会把“<script language=javascript>window.close();</javascript>“以文本形式写到保存的文件里面,并且窗口不会自动关。