首页 新闻 会员 周边 捐助

asp.net下载文件之后,页面不会跳转

0
悬赏园豆:100 [已解决问题] 解决于 2019-07-04 12:03

/// <summary>
/// 下载方法
/// </summary>
/// <param name="filename"></param>
public void DownLoad(string filename)
{
try
{
//string name = Request.QueryString["filename"];
string name = filename;
string path = Server.MapPath("peison/Music/") + name;

System.IO.FileInfo file = new System.IO.FileInfo(path);

Response.Clear();

Response.Charset = "UTF8";

Response.ContentEncoding = System.Text.Encoding.UTF8;

// 添加头信息,为"文件下载/另存为"对话框指定默认文件名

Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));

// 添加头信息,指定文件大小,让浏览器能够显示下载进度

Response.AddHeader("Content-Length", file.Length.ToString());

Response.ContentType = "application/octet-stream";
// 把文件流发送到客户端

Response.WriteFile(file.FullName);

Response.Redirect("SingerPage.aspx");
// 停止页面的执行(表示线程已经终止,不向客户端做任何操作)
Response.End();
// ClientScript.RegisterStartupScript(GetType(), "", "<script>window.close();location.href='SingerPage.aspx';</script>");

}
catch (Exception ex)
{

Response.Write("<script>alert('下载出错')</script>");
}

}

 

 

这是调用,的代码?


//下载音乐
//获得下载的文件名
string musicproduct = System.IO.Path.GetFileName(Session["musicproduct"].ToString());
//Response.Write(MusicName);
Response.Write("<script language=javascript>location.href='PayMoneyPage.aspx?filename=" + musicproduct + "'</script>");//跳转至另一页面(但无法实现再跳回上一页)
this.DownLoad(musicproduct);

文件可以下载,但是下载完之后,页面不会跳转,怎样都不可以,有什么解决方法吗?

hedeqiang的主页 hedeqiang | 初学一级 | 园豆:112
提问于:2016-07-27 20:33
< >
分享
最佳答案
0

调回哪一页?你这一页就一直是跳转,你还想跳回这一页?那不是一直都往真正的下载页跳?

收获园豆:100
顾晓北 | 专家六级 |园豆:10898 | 2016-07-28 09:52

我想在下载完成之后,让他跳转到别的页面,我设置跳转他就是没有跳转

hedeqiang | 园豆:112 (初学一级) | 2016-07-28 11:41

我想返回我之前的页面。

hedeqiang | 园豆:112 (初学一级) | 2016-07-28 11:42

@hedeqiang9436: 没明白意思,Response.End();都end了,后面还有代码,想要做什么?

你还是描述一下你的业务场景,比如:

我想在A页面,点击一个链接,跳转到B页面,进行下载文件,下载完成以后,跳回到A页面。。。

类似的。。。

顾晓北 | 园豆:10898 (专家六级) | 2016-07-28 11:49

@顾晓北: 对对对,就是你这个逻辑,

hedeqiang | 园豆:112 (初学一级) | 2016-07-28 11:51

@hedeqiang9436: 如果是我这个逻辑,抱歉,估计实现不了。。。

而且,这样的体验也并不好。。。

顾晓北 | 园豆:10898 (专家六级) | 2016-07-28 11:57

@顾晓北: 实现不了吗?哪别人的跳转是怎样实现的呢

hedeqiang | 园豆:112 (初学一级) | 2016-07-28 12:04

@hedeqiang9436: 你为什么跳转来跳转去呢?直接在A页面点击,然后就开始下载了步行么?

顾晓北 | 园豆:10898 (专家六级) | 2016-07-28 12:23

@顾晓北: 你这样也可以,我在A页面下载,下载完之后我得把A页面关闭把,但是他同样也不会关闭

hedeqiang | 园豆:112 (初学一级) | 2016-07-28 16:53

@hedeqiang9436: 这其实就是打开一个新页面,新页面是下载功能,如果想关闭,只能是:在A页面点击链接,打开一个真实的B页面,浏览器开始下载(这在比较好的浏览器,比如谷歌上,应该是直接下载,根本不会打开页面,这就是浏览器的优化,如果打开的页面输出的是文件,直接启动下载功能),在打开B页面的同时,关闭A页面。。。

顾晓北 | 园豆:10898 (专家六级) | 2016-07-28 17:07
其他回答(4)
0
搓男是我 | 园豆:202 (菜鸟二级) | 2016-07-28 10:06
0

换一种思路,下载的时候跳转使用打开浏览器新标签(或弹窗)进行下载,下载完成后关掉当前标签页或窗口。

顽皮大叔 | 园豆:318 (菜鸟二级) | 2016-07-28 15:26

有点儿不理解

支持(0) 反对(0) hedeqiang | 园豆:112 (初学一级) | 2016-07-28 16:54

 你能知道什么时候下载完???

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-07-28 17:05
0

因为只有一个response 所以无法跳转 

可以考虑弹出窗体 下载完关闭 在关闭的时候处理父页面的跳转

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-07-29 11:14

文件下载完了,他也不会关闭 ,

支持(0) 反对(0) hedeqiang | 园豆:112 (初学一级) | 2016-07-30 03:06

@hedeqiang9436: 我记得会关闭的 

支持(0) 反对(0) 小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-08-02 13:08
0

你其实可以考虑用Server.Transfer();

youhao17 | 园豆:203 (菜鸟二级) | 2019-07-05 08:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册