2009-10-18 2 views
2

Привет Я создаю интернет-магазин. В этом случае люди в Интернете должны покупать файлы с расширением zip. Они платят с помощью своих кредитных карт или других методов, получают ключ и загружают продукт. Как я могу узнать, когда они заканчивают загрузку продукта? СпасибоКак узнать, когда загрузка завершена

+0

Вы можете обнаружить, что они запускают загрузку, но не завершают загрузку. Если кто-то не подумает иначе, я буду рад узнать. –

ответ

2

К сожалению, нет действительно хорошего способа сделать это, так как некоторые клиенты могут не загружать файл сразу (например, Downloadmanagers разделяют загрузку на несколько партийных загрузок).

Варианты:

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

Вы не должны просто считать загруженные байты (поскольку загрузка может быть нарушена). И НЕ просто определить, были ли все разделы загружены один раз (также потому, что загрузка может быть нарушена)

Просто для пояснения: все это означает, что вам нужно написать собственный обработчик загрузки (файловый сервер).

0

вы можете использовать пользовательский файловый сервер, который работает на http или ftp и отправляет уведомление, как только клиент получит последний фрагмент файла.

все другие варианты проблематичны; клиент может загрузить файл с помощью диспетчера загрузки, поэтому вы даже не можете регистрироваться для какого-либо события в браузере, если таковое имеется.

+0

Очевидно, что ваш ответ требует, чтобы пользовательский файловый сервер не поддерживал возобновление. – Foxfire

0

Пользовательское серверное приложение кажется действительно решением для этого, или, возможно, своего рода сценарием.

Нормальный сервер HTTP не уведомляет конец связи, , но, возможно, если Вы производите вывод в CGI/PHP/ASP/* сценарий, прочитать файл в CGI/PHP/ASP/* язык сценариев и отправьте его на выход. когда вы дойдете до конца файла, вы выполните , а затем закончите сценарий.

Когда вы это сделаете, оно обнаружит только полностью загруженные файлы, , и если соединение будет прервано на полпути, оно не отметит файл при загрузке.

a 'cgi-script' может быть скомпилированной программой c (или любым другим langauge , если на то пошло). Скомпилированный код в любом случае. Скомпилированная программа даст более высокую производительность, чем интерпретируемое решение для скриптов.

Смежные вопросы