我有一个用户在线完成的网络表单。当他们按下提交时,它将为他们开始下载文件。
目前,我处理表单提交并为用户生成合适的文件,并使用合适的标头将其关闭。例如...
header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");
但是,由于这会立即开始下载,因此浏览器会将原始表单保留在屏幕上。
下载完成后(或下载开始前)我真的想去一些“谢谢”屏幕。我知道这是可能的,因为您访问的几乎每个下载站点都会这样做(通常在下载开始之前为您提供完整的广告)。
那么,如何在一秒后显示“谢谢”屏幕开始下载?
如何提出任何解决方案会影响后退按钮的行为,因为我不希望在没有重新填充表单的情况下再次下载文件?
我在服务器上使用PHP,可以依赖客户端上的Javascript(和jQuery)。
谢谢。
答案 0 :(得分:23)
您可以将表单发送到谢谢文档并在文件下载中添加 META refresh :
<meta http-equiv="refresh" content="3;url=download.php">
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p>
答案 1 :(得分:3)
添加第二页,上面写着“谢谢你,你的下载将在几秒钟内开始”并使用javascript触发下载:
$(document).ready(function(){
window.setTimeout(function(){
window.location = 'http://yourdownloadhost.com/file.zip';
}, 1500);
});
或使用元重定向。
答案 2 :(得分:0)
您可以在页面中插入隐藏的iframe,然后将表单提交到此iframe。