1

我在这里嵌入了一个销售人员表格。此表单的作用是将用户输入数据从我的站点带到 salesforce.com,并在将数据保存在那里后,通过传入表单的返回 url 返回到我的站点。

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

现在我从下载/谢谢页面传递的标题是:

        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);

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

4

2 回答 2

1

浏览器到达的最终 URL 要么是具有浏览器可以理解的 MIME 类型的文档(例如text/html),要么不能。如果是,浏览器会显示它并在地址栏中显示相应的URL。如果不是(例如application/exe),它将下载它并保持 URL 不变。

如果您想在下载时显示一条消息,您必须返回一个显示text/html“您的下载将很快开始”的 HTML 页面(使用 MIME 类型),然后使用 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>
于 2012-09-04T07:13:44.913 回答
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 秒后开始下载。检查setTimeoutjavascript函数。

于 2012-09-04T07:14:27.073 回答