我必须在下载文件后重定向到同一页面!
当我说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
提前致谢!
答案 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页面。