下载文件后无法重定向

时间:2012-06-12 19:00:13

标签: c# http-headers download

我必须在下载文件后重定向到同一页面!

当我说response.redirect ..它说在发送HTTP标头后无法重定向

有人可以帮我这个吗?

我正在使用ionic.zip压缩文件并下载它。

PS:请告诉我,如果我必须更清楚地说明我的问题,我可以解释一下:(

    Response.Clear();
    Response.BufferOutput = false;
    string filename = "results" + ".zip";
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "filename=" + filename);

    using (ZipFile zip = new ZipFile())
    {
        zip.AddDirectory(pathhdf.Value);
        zip.Save(Response.OutputStream);
    }

    Response.Close();

   Response.Redirect("Default.aspx"); /// here come my error

提前致谢!

3 个答案:

答案 0 :(得分:3)

发送HTTP内容后,您无法发送重定向标头或任何其他HTTP标头。在这种情况下,您的HTTP内容是.zip文件,因此在将.zip文件写入输出流后,您无法发送重定向标头。

答案 1 :(得分:2)

您无法从服务器重定向,因为您不知道客户端下载文件需要多长时间。您可以使用javascript间隔来轮询服务器可以发出的cookie的存在。这是一个nice article解释这个。一旦检测到cookie,客户端就知道下载已经完成,您可以使用例如window.location.href重定向。这是一个similar post

答案 2 :(得分:1)

发送文件后无法进行重定向。一个请求只能有一个响应,重定向本身就是一个响应。

如果要同时进行下载和重定向,则必须从客户端发送两个请求。开始下载,然后使用setTimeout在延迟足够长的时间后重定向到Default.aspx,以便知道donload已经开始。服务器一次只回复一个请求,因此下载完成后会加载Default.aspx页面。