我有一个PHP应用程序,创建一个CSV文件,这是强制下载使用标题。以下是代码的相关部分:
header('Content-Type: application/csv');
header("Content-length: " . filesize($NewFile));
header('Content-Disposition: attachment; filename="' . $FileName . '"');
echo $content;
exit();
我想做的是在构建文件并发送下载提示后,将用户重定向到一个新页面。只是将header("Location: /newpage")
添加到末尾并不起作用,所以我不确定如何装配它。
发布于 2013-11-21 23:15:44
在真正需要的情况下,很容易做到。
但您需要在JavaScript和cookies方面做一些工作:
在PHP中,您应该添加设置cookie
header('Set-Cookie: fileLoading=true');
然后在你调用下载的页面上,你应该用JS跟踪(例如每秒一次),如果有像这样的cookie (这里有使用的插件jQuery cookie ):
setInterval(function(){
if ($.cookie("fileLoading")) {
// clean the cookie for future downoads
$.removeCookie("fileLoading");
//redirect
location.href = "/newpage";
}
},1000);
现在,如果文件开始下载,JS会识别它,并在删除cookie后重定向到所需的页面。
当然,您可以告诉您需要浏览器接受cookies、JavaScript等,但它是有效的。
发布于 2009-05-05 00:07:09
您要发送的标头是HTTP标头。浏览器将其作为页面请求并将其作为页面进行处理。在您的情况下,它需要下载一个页面。
因此,添加一个重定向标头会使下载文件的整个过程变得混乱(由于标头是收集的,生成一个标头,然后发送到浏览器,您可以通过设置多个重定向标头IIRC来尝试此操作)
发布于 2011-10-25 05:26:03
但是,请记住,自动启动IE用户的可下载文件将触发安全警告选项卡。daremon概述的所有三种方法都会显示此警告。你根本无法绕过这一点。如果你提供真实的链接,你会得到更好的服务。
https://stackoverflow.com/questions/822707
复制相似问题