登陆PHP下载页面

时间:2012-09-04 07:05:59

标签: php download

我有一个嵌入式here的salesforce表单。这个表单的作用是将用户输入数据从我的站点带到salesforce.com,在保存数据之后,它通过传递给表单的返回URL返回到我的站点。

现在,它应该返回的页面有一个文件下载功能。文件下载正常,但浏览器中的URL是提交表单的位置。我希望浏览器在提交表单后导航到我的站点,并在同时显示消息的同时下载文件。目前只有文件下载,而且空白页也是如此。

现在我从download / thankyou页面传来的标题是:

        header('Content-Type: "'.$mime.'"');
        header('Content-Disposition: attachment; filename="'.$filename.'"');
        header("Content-Transfer-Encoding: binary");
        header('Expires: 0');
        header('Pragma: no-cache');
        header("Content-Length: ".strlen($data));

然后我冲洗缓冲区:

    ob_clean(); flush(); 
    exit($data);

如果您需要,请在表格中查看,如果信息不充分,请发表评论。该站点仍处于调试模式。另外,请指导我应该做些什么来实现我想要的目标。

2 个答案:

答案 0 :(得分:1)

浏览器登陆的最终网址将是具有浏览器可以理解的MIME类型的文档(例如text/html),或者不会。如果是,浏览器将显示它并在地址栏中显示相应的URL。如果不是(例如application/exe),则会下载并保留原来的网址。

如果您想在下载时显示消息,则必须回送一个HTML页面(MIME类型为text/html),上面写着“您的下载将很快开始”,然后启动使用JavaScript下载,例如:

<!DOCTYPE html>

<html>
  <head>
    <title>Downloading your file</title>
  </head>

  <body>
    <h1>Downloading your file</h1>
    <p>Your download will begin shortly</p>

    <script>
        window.setTimeout(
            function() {
                window.location.href = "/mydownload.exe";
            },
            3000 // start download after 3 seconds
        );
    </script>
  </body>
</html>

答案 1 :(得分:1)

你需要做的是让saleforce.com的“返回”页面成为常规的php文件,例如 thankyou.php ,它只向最终用户显示HTML。在HTML / JS中,您还可以重定向到下载。像这样:

echo "Thank you.  Your file download will start shortly</h2>";
echo "<script type='text/javascript'>window.location = '$filename'</script>";

然后在单独的 download.php 中输入您在上面显示的代码。

请注意,我只是向您展示这个想法。通常,您希望(a)分离HTML和JS; (b)检查您是否确实来自正确的salesforce.com页面并获得了正确的退货结果。最后,您可能需要延迟,以便在显示页面后5-10秒后开始下载。检查setTimeout javascript函数。