Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Auto start file download after form submission

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.

like image 698
Rik Heywood Avatar asked Oct 02 '09 12:10

Rik Heywood


People also ask

How do you create a button that submits a form and download a PDF simultaneously?

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.


1 Answers

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>
like image 116
Gumbo Avatar answered Oct 22 '22 13:10

Gumbo