I have a web form that users complete online. When they press submit it will start a file download for them.
At the moment, I process the form submission and generate a suitable file for the user and fire it off with suitable headers. eg...
header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");
However, since this starts a download right away, the original form is left on screen by the browser.
I would really like to go to some "Thank you" screen once the download completes (or before the download starts). I know it is possible, because almost every download site you visit does this (normally to pump you full of adverts before the download starts).
So, How do I show a "Thank You" screen that starts the download after a second?
How would any solution proposed effect the behaviour of the back button, as I don't want the file downloading again without the form being refilled?
I am using PHP on the server and can rely on Javascript (and jQuery) being available on the client.
Thank you.
Firstly, create a form with the hidden submit button. Give id to the form submit button to access it using JS. Create a button outside the form and also give it a unique id to access it. Make an anchor tag using createElement property and assigning it the href and download attribute.
You could send the form to the Thank you document and put there a META refresh to the file download:
<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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With