现在有test1.aspx和test2.aspx两个页面,我要点击test1.aspx的按钮跳转到test2.aspx页面即Response.Redirect("test2.aspx"),而在test2.aspx中的Page_Load事件中则有
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string path = HttpContext.Current.Server.MapPath("~/js/DD_belatedPNG_0.0.8a-min.js");//路径
if (File.Exists(path)) //如果文件存在
{
FileInfo fileInfo = new FileInfo(path);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("下载名称.js"));//HttpUtility.UrlEncode防止文件下载时"文件名"出现中文乱码
HttpContext.Current.Response.AddHeader("Content-Length", fileInfo.Length.ToString());
HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary");
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("gb2312");
HttpContext.Current.Response.WriteFile(fileInfo.FullName);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
}
}
}
}
当点击test1.aspx的按钮想要跳转到test2.aspx页面时,就出现了下载对话框,而且下载完后都没有跳转到test2.aspx页面,还是停留在test1.aspx页面
我想要实现的效果是先跳到test2.aspx页面后才开始下载文件!
先谢谢各位了!
这个应该是游览器本身的行为吧,如果是,估计很难改变
这个完全可以用DataHandler实现下载没有必要跳到另外一个页面下载
因为test2.aspx页面的Content-Disposition是attachment。所以浏览器将test2.aspx视作文件下载,直接出现下载对话框,这其实就是你所谓“转到test2.aspx”的浏览器的表现形式。
如果需要在test2上停留再开始下载,那把test2做成一个页面,在页面载入后用客户端javascript脚本开始下载。