我有一个嵌入式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);
如果您需要,请在表格中查看,如果信息不充分,请发表评论。该站点仍处于调试模式。另外,请指导我应该做些什么来实现我想要的目标。
答案 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函数。