Это зависит от того, сколько неприятностей вы хотите решить.
Единственный способ узнать, действительно ли они скачали файл , - это подключиться к процессу передачи файла клиенту & mdash; так что это означает либо подключиться к Joomla или к любому используемому вами веб-серверу, либо заставить загрузку пройти через страницу PHP, которая в основном просто читает файл с диска и отправляет его. Даже если вы сделаете это, все, что вы действительно знаете, это то, что файл был запрошен браузером, и что вы удовлетворили запрос. Вы не знаете, что пользователь не выбрасывал его сразу после этого.
С точки зрения отображения перенаправления, когда оно выполнено, если вы подключились к процессу, как описано выше, вы можете установить переменную сеанса, указывающую, был ли загружен файл (например, после отправки последнего байта). Вы можете использовать Ajax для периодического запроса состояния этого флага сеанса и использовать JavaScript для перенаправления на клиенте, если флаг вернулся в состояние true.
Если вам нужно только знать, что они начали загрузку, вы можете сделать это с помощью механизма cookie. Отправляя файл обратно, добавьте в ответ файл cookie. (Вы можете сделать это, направив загрузку через файл PHP, как указано выше, или если ваш веб-сервер имеет широкие возможности настройки - mdash; Apache может это сделать, например & mdash; вы можете настроить его для автоматического добавления файла cookie.) Ваша страница ожидая, загрузят ли они файл (или, по крайней мере, запустил , чтобы загрузить его), использует JavaScript для периодической проверки наличия файла cookie (а не опроса сервера), что снижает трафик. Этот вопрос и ответ говорит о том, как сделать это, (немного) более подробно. Я делаю это в приложении, где сервер настраивает большой PDF или ZIP для загрузки: я показываю «строительный» div, когда они запрашивают файл, затем запрашивает cookie и удаляет «строительный» div, когда cookie появляется. В основных браузерах cookie обнаруживается в тот момент, когда браузер показывает окно, спрашивающее, сохранять ли файл на диск или открывать его, потому что оба запускаются при ответном ответе.
Если вышеописанное сопряжено с большими трудностями (и я думаю, что в некоторых случаях это возможно), вы можете добавить обработчик событий JavaScript click
в ссылку для скачивания. Это скажет вам, что они нажали на ссылку, но больше ничего вам не скажут.