как узнать, загружен ли файл пользователем или нет? - PullRequest
2 голосов
/ 03 апреля 2010

У меня есть функциональность, где пользователю дается файл для загрузки. Работает нормально. НО -

  1. Как узнать, скачал ли пользователь файл или отменил его?
  2. После загрузки я смотрю, чтобы перенаправить текущую страницу на другую, чего тоже не происходит.

Пожалуйста, дайте мне знать, если кто-нибудь из вас имеет представление об этом. (Я делаю это в Joomla)

С уважением, Шаху

1 Ответ

4 голосов
/ 03 апреля 2010

Это зависит от того, сколько неприятностей вы хотите решить.

Единственный способ узнать, действительно ли они скачали файл , - это подключиться к процессу передачи файла клиенту & mdash; так что это означает либо подключиться к Joomla или к любому используемому вами веб-серверу, либо заставить загрузку пройти через страницу PHP, которая в основном просто читает файл с диска и отправляет его. Даже если вы сделаете это, все, что вы действительно знаете, это то, что файл был запрошен браузером, и что вы удовлетворили запрос. Вы не знаете, что пользователь не выбрасывал его сразу после этого.

С точки зрения отображения перенаправления, когда оно выполнено, если вы подключились к процессу, как описано выше, вы можете установить переменную сеанса, указывающую, был ли загружен файл (например, после отправки последнего байта). Вы можете использовать Ajax для периодического запроса состояния этого флага сеанса и использовать JavaScript для перенаправления на клиенте, если флаг вернулся в состояние true.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...