ASP.NET页面加载后开始下载

时间:2013-04-10 12:20:14

标签: asp.net redirect onload

我有这个代码在页面显示给用户后开始下载:

 protected void Page_Load(object sender, EventArgs e)
    {
        Response.Redirect("http://myserver.com/myfile.zip", false);   
    }        

但重定向是在页面加载之前完成的,页面永远不会加载。

如何开始下载并完成向客户端显示页面?

我无法使用Transmit.File,因为该文件位于不同的服务器上。

2 个答案:

答案 0 :(得分:2)

protected void Page_Load(object sender, EventArgs e)
{
  Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "java", "setTimeout(Redirect, 9000);", true);
}

在aspx页面中创建一个javascript函数

<script language="javascript" type="text/javascript">
    function Redirect() {
        window.location = 'http://myserver.com/myfile.zip';
    }
</script>

答案 1 :(得分:1)

我使用以下代码弹出一个对话框来下载CSV文件。也许这样的事情对你有用吗?

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", "filename=export.csv");
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.Write(sb.ToString()); // In my case, the StringBuilder object was the file to be written.  I don't know exactly what you'd for a non dynamic file.
HttpContext.Current.Response.End();