0

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

当我说 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

提前致谢!

4

3 回答 3

3

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

于 2012-06-12T19:06:42.660 回答
2

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

于 2012-06-12T19:01:41.450 回答
1

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

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

于 2012-06-12T19:07:23.960 回答