下载文件后无法重定向

本文关键字:重定向 文件 下载 | 更新日期: 2023-09-27 18:37:00

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

当我说响应.重定向..它说发送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

提前感谢!

下载文件后无法重定向

发送 HTTP

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

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

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

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