首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP生成要下载的文件,然后重定向

PHP生成要下载的文件,然后重定向
EN

Stack Overflow用户
提问于 2009-05-05 00:00:48
回答 9查看 94.6K关注 0票数 66

我有一个PHP应用程序,创建一个CSV文件,这是强制下载使用标题。以下是代码的相关部分:

代码语言:javascript
复制
header('Content-Type: application/csv'); 
header("Content-length: " . filesize($NewFile)); 
header('Content-Disposition: attachment; filename="' . $FileName . '"'); 
echo $content;
exit(); 

我想做的是在构建文件并发送下载提示后,将用户重定向到一个新页面。只是将header("Location: /newpage")添加到末尾并不起作用,所以我不确定如何装配它。

EN

回答 9

Stack Overflow用户

发布于 2013-11-21 23:15:44

在真正需要的情况下,很容易做到。

但您需要在JavaScript和cookies方面做一些工作:

在PHP中,您应该添加设置cookie

代码语言:javascript
复制
header('Set-Cookie: fileLoading=true'); 

然后在你调用下载的页面上,你应该用JS跟踪(例如每秒一次),如果有像这样的cookie (这里有使用的插件jQuery cookie ):

代码语言:javascript
复制
setInterval(function(){
  if ($.cookie("fileLoading")) {
    // clean the cookie for future downoads
    $.removeCookie("fileLoading");

    //redirect
    location.href = "/newpage";
  }
},1000);

现在,如果文件开始下载,JS会识别它,并在删除cookie后重定向到所需的页面。

当然,您可以告诉您需要浏览器接受cookies、JavaScript等,但它是有效的。

票数 14
EN

Stack Overflow用户

发布于 2009-05-05 00:07:09

您要发送的标头是HTTP标头。浏览器将其作为页面请求并将其作为页面进行处理。在您的情况下,它需要下载一个页面。

因此,添加一个重定向标头会使下载文件的整个过程变得混乱(由于标头是收集的,生成一个标头,然后发送到浏览器,您可以通过设置多个重定向标头IIRC来尝试此操作)

票数 10
EN

Stack Overflow用户

发布于 2011-10-25 05:26:03

但是,请记住,自动启动IE用户的可下载文件将触发安全警告选项卡。daremon概述的所有三种方法都会显示此警告。你根本无法绕过这一点。如果你提供真实的链接,你会得到更好的服务。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/822707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档