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

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

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

header('Content-type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="yourfile.txt"');
header("Content-Transfer-Encoding: binary");

однако, так как это начинает загрузку сразу, исходная форма остается на экране браузером.

Я бы очень хотел перейти к экрану "Спасибо" после завершения загрузки (или до начала загрузки). Я знаю, что это возможно, потому что почти каждый сайт загрузки, который вы посещаете, делает это (обычно, чтобы накачать вас рекламой до начала загрузки).

Итак, как мне показать экран "Спасибо", который запускает загрузку через секунду?

Как любое предлагаемое решение повлияет на поведение кнопки "назад", так как я не хочу, чтобы файл загружался снова без заполнения формы?

Я использую PHP на сервере и могут полагайтесь на Javascript (и jQuery), доступный на клиенте.

спасибо.

3 ответов


вы можете отправить форму спасибо документ и положил туда обновление 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>

добавьте вторую страницу, которая говорит что-то "спасибо, ваш donwnload начнется через несколько секунд" и запускает загрузку с помощью javascript:

$(document).ready(function(){
  window.setTimeout(function(){
    window.location = 'http://yourdownloadhost.com/file.zip';
  }, 1500);
});

или используйте перенаправление meta.


вы можете вставить скрытый iframe на свою страницу и отправить свою форму в этот iframe.