表单提交后自动启动文件下载
-
19-09-2019 - |
题
我有一个网页表单的用户完整的在线。当他们按下提交它将启动一个文件下载它们。
目前,我处理表单提交和为用户生成一个合适的文件,并用合适的报头触发它关闭。例如...
header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");
然而,由于这将启动一个下载马上,原来的形式是由浏览器留在屏幕上。
我真的很想去一些“谢谢”屏幕上,一旦下载完成(或下载开始之前)。我知道这是可能的,因为几乎你访问每一个下载网站做到这一点(通常抽你充满广告的下载开始之前)。
那么,如何表现出“谢谢”屏幕,一秒钟后开始下载?
如何将提出的任何解决方案的效果后退按钮的行为,因为我不希望文件,而无需重新填充的形式重新下载?
我使用PHP服务器上,并且可以依赖于JavaScript(和jQuery)是可用的客户机上。
感谢您。
解决方案
您可以在形式发送到的感谢您的文件,并把那里的 META刷新应用于文件下载:
<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>
其他提示
补充一下,说了些第二页“谢谢你,你的下载将在几秒钟内启动”并触发使用JavaScript下载:
$(document).ready(function(){
window.setTimeout(function(){
window.location = 'http://yourdownloadhost.com/file.zip';
}, 1500);
});
或使用元重定向。
您可以插入一个隐藏的iframe到您的网页并提交表单这个iframe中。
不隶属于 StackOverflow