Подтвердить что ты не робот

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

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

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

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

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

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

Ответ 2

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

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

или использовать мета-перенаправление.

Ответ 3

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