У меня такой сценарий
<?php if (file_exists("./foo.txt")) { header("Content-type: application/force-download"); header("Content-length: ".filesize("./foo.txt")); header('Content-Disposition: attachment; filename="foo.txt"'); readfile('./foo.txt'); } print "HEY!"; ?>
и я хочу, чтобы «Эй» был записан на страницу после принудительной загрузки, как это возможно?
Я вижу страницы загрузки, которые похожи на «Если ваша загрузка не запускается автоматически, нажмите здесь», так что это контент и загрузка? hey
в моем примере включен в текстовый файл, поэтому он не работает.
Это возможно только с помощью многостраничного сообщения . Но, к сожалению, не так много браузеров, которые поддерживают множественные сообщения в HTTP (я думаю, что Opera – единственная).
Вот почему распространенная практика заключается в том, чтобы отправить страницу загрузки с перенаправлением мета обновления, чтобы иметь как текстовое сообщение, так и действие загрузки (хотя оно находится в обратном порядке).
Вы можете сделать это с META REFRESH следующим образом:
<meta http-equiv=REFRESH CONTENT="5; url=http://your_domain/your_file">
Это невозможно. (По крайней мере, пока у нас нет многопроцессорных запросов.)
Страницы, на которые вы указываете, перенаправляются на страницу «если ваша загрузка не запускается …» и запускают загрузку там, обычно используя JavaScript, чтобы открыть загрузку в новом окне.
Отобразите сообщение на другой странице .. затем укажите ссылку для загрузки файла или перенаправления браузера в файл php, который заставляет загрузить.
onClick="setTimeout(location.reload.bind(location), 15000);"
Это будет ждать 15 секунд (15 000 миллисекунд), а затем вызовите функцию location.reload, которая является встроенной функцией для обновления страницы.