使用Response下载后,之后的代码不执行怎么办?

司徒彦 2014-11-26 11:02:24
我做了一个导出Excel功能,用的com组件的方式,先导出到web服务器,再用Response做一个下载到客户端,那么问题来了,导出下载啥的都没问题,但是在下载之后想做页面跳转或弹出alert甚至给控件赋值都做不到了,后面的代码根本不执行了,我知道问题出在这个Response上,但是怎么解决不知道,请大神们指点!
以下三种方式都试了,弹出、跳转、赋值都不好用!

string strFileName = "三部闲置设备管理系统操作手册IEMS.ppt";
Response.ContentType = "application/x-zip-compressed";
string filename = “D://EMUploadDoc//“ + strFileName;
Response.AddHeader("Content-Disposition", "attachment;filename=" +Server.UrlPathEncode(strFileName));
Response.TransmitFile(filename);
//以下代码都不执行,都试了
Response.Write("<script>alert('导出成功!');</script>");
Page.RegisterStartupScript("asddas", "<script>alert('导出成功!');</script>");
ClientScript.RegisterStartupScript(ClientScript.GetType(), "asddas", "<script>alert('导出成功!');</script>");
Response.Redirect("Index.aspx");
this.hiddenfile.value="0";


string fileName = "aaa.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
//以下代码都不执行,都试了
Response.Write("<script>alert('导出成功!');</script>");
Page.RegisterStartupScript("asddas", "<script>alert('导出成功!');</script>");
ClientScript.RegisterStartupScript(ClientScript.GetType(), "asddas", "<script>alert('导出成功!');</script>");
Response.Redirect("Index.aspx");
this.hiddenfile.value="0";


string fileName = "asd.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
FileInfo fileInfo = new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
//以下代码都不执行,都试了
Response.Write("<script>alert('导出成功!');</script>");
Page.RegisterStartupScript("asddas", "<script>alert('导出成功!');</script>");
ClientScript.RegisterStartupScript(ClientScript.GetType(), "asddas", "<script>alert('导出成功!');</script>");
Response.Redirect("Index.aspx");
this.hiddenfile.value="0";
...全文
358 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 yannanlee724 的回复:
[quote=引用 1 楼 insus 的回复:] Refer here: http://zzk.cnblogs.com/s?w=blog%3Ainsus%20%E4%B8%8B%E8%BD%BD
下载功能做出来了,下载之后的跳转或赋值或弹出提示框不好使[/quote] 少贴代码,问一些原理,那么发广告的人就少了。
  • 打赏
  • 举报
回复
贴这么一大堆代码,你反而会误导了别人给你瞎发广告。其实关键点就在一两句话的事。 你这种下载,就是纯粹的下载。而你的要做的不是仅仅下载,那么你应该把下载放到一个弹出页面中执行,当前页面该刷新还是要刷新,在刷新过程中通过 RegisterStartupScript 注册一个脚本让客户端执行 window.open(....) 来打开另外一个下载过程。
宝_爸 2014-11-26
  • 打赏
  • 举报
回复
天下如山 2014-11-26
  • 打赏
  • 举报
回复
确实 ajax调 是不行的。
_萧萧 2014-11-26
  • 打赏
  • 举报
回复
Response.End(); 后面肯定不会执行啊 你也理解一下你自己写的是什么东西吧
司徒彦 2014-11-26
  • 打赏
  • 举报
回复
引用 3 楼 sibiyellow 的回复:
用ajax处理 你的跳转赋值弹出提示框在JS端进行处理。
是指在JS中调用一般处理程序吗,如果是的话我试过,调不到,能给段代码吗,ajax用的不是很熟
天下如山 2014-11-26
  • 打赏
  • 举报
回复
用ajax处理 你的跳转赋值弹出提示框在JS端进行处理。
司徒彦 2014-11-26
  • 打赏
  • 举报
回复
引用 1 楼 insus 的回复:
Refer here: http://zzk.cnblogs.com/s?w=blog%3Ainsus%20%E4%B8%8B%E8%BD%BD
下载功能做出来了,下载之后的跳转或赋值或弹出提示框不好使
insus 2014-11-26
  • 打赏
  • 举报
回复
司徒彦 2014-11-26
  • 打赏
  • 举报
回复
引用 7 楼 findcaiyzh 的回复:
看看这些帖子: How can i display an alert after Response.End http://stackoverflow.com/questions/8276619/how-can-i-display-an-alert-after-response-end alert box after response.end() http://forums.asp.net/t/1923422.aspx?alert+box+after+response+end+
大哥,好像是这个意思,但是小弟才疏学浅,实在看不懂英文的啊!
司徒彦 2014-11-26
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
贴这么一大堆代码,你反而会误导了别人给你瞎发广告。其实关键点就在一两句话的事。 你这种下载,就是纯粹的下载。而你的要做的不是仅仅下载,那么你应该把下载放到一个弹出页面中执行,当前页面该刷新还是要刷新,在刷新过程中通过 RegisterStartupScript 注册一个脚本让客户端执行 window.open(....) 来打开另外一个下载过程。
有思路了 太感谢了
司徒彦 2014-11-26
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
[quote=引用 2 楼 yannanlee724 的回复:] [quote=引用 1 楼 insus 的回复:] Refer here: http://zzk.cnblogs.com/s?w=blog%3Ainsus%20%E4%B8%8B%E8%BD%BD
下载功能做出来了,下载之后的跳转或赋值或弹出提示框不好使[/quote] 少贴代码,问一些原理,那么发广告的人就少了。[/quote] 谢谢大哥!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧