/// <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);
文件可以下载,但是下载完之后,页面不会跳转,怎样都不可以,有什么解决方法吗?
调回哪一页?你这一页就一直是跳转,你还想跳回这一页?那不是一直都往真正的下载页跳?
我想在下载完成之后,让他跳转到别的页面,我设置跳转他就是没有跳转
我想返回我之前的页面。
@hedeqiang9436: 没明白意思,Response.End();都end了,后面还有代码,想要做什么?
你还是描述一下你的业务场景,比如:
我想在A页面,点击一个链接,跳转到B页面,进行下载文件,下载完成以后,跳回到A页面。。。
类似的。。。
@顾晓北: 对对对,就是你这个逻辑,
@hedeqiang9436: 如果是我这个逻辑,抱歉,估计实现不了。。。
而且,这样的体验也并不好。。。
@顾晓北: 实现不了吗?哪别人的跳转是怎样实现的呢
@hedeqiang9436: 你为什么跳转来跳转去呢?直接在A页面点击,然后就开始下载了步行么?
@顾晓北: 你这样也可以,我在A页面下载,下载完之后我得把A页面关闭把,但是他同样也不会关闭
@hedeqiang9436: 这其实就是打开一个新页面,新页面是下载功能,如果想关闭,只能是:在A页面点击链接,打开一个真实的B页面,浏览器开始下载(这在比较好的浏览器,比如谷歌上,应该是直接下载,根本不会打开页面,这就是浏览器的优化,如果打开的页面输出的是文件,直接启动下载功能),在打开B页面的同时,关闭A页面。。。
换一种思路,下载的时候跳转使用打开浏览器新标签(或弹窗)进行下载,下载完成后关掉当前标签页或窗口。
有点儿不理解
你能知道什么时候下载完???
因为只有一个response 所以无法跳转
可以考虑弹出窗体 下载完关闭 在关闭的时候处理父页面的跳转
文件下载完了,他也不会关闭 ,
@hedeqiang9436: 我记得会关闭的
你其实可以考虑用Server.Transfer();