下载文件后无法重定向
本文关键字:重定向 文件 下载 | 更新日期: 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 页面将在下载完成后加载。