Загрузка файла автозагрузки после отправки формы

У меня есть веб-форма, которую пользователи заполняют в Интернете. Когда они нажимают кнопку отправки, он начнет загрузку файлов для них.

На данный момент я обрабатываю форму отправки и создаю подходящий файл для пользователя и запускаю его подходящими заголовками. например…

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.