У Грега правильная идея.
Вместо того, чтобы следовать большинству или смотреть, как все делается, посмотрите на умные альтернативы, как объяснение Грега выше.
Любая загрузка не может функционировать без действительной связи между клиентом и сервером; следовательно, если вы закроете окно браузера или перенаправите его в другое место, загрузка будет прервана.
используйте iframe и назовите его, например: "myframe". Вы можете легко скрыть это в div. иметь форму с вашими action = "somefile.php" и target = "myframe". добавьте lav Javascript в поле «file» вашей формы: onFocus = "uploadlistener ()". Вы можете назвать эту функцию как угодно, но используйте ее, чтобы проверить, «открыл» ли человек что-либо. браузер автоматически переключит фокусировку, независимо от того, нажал ли пользователь кнопку «Обзор» или если он затем открыл файл. Разница в том, что после того, как файл «выбран», поле ввода снова получает фокус, но помните, что у вас есть прослушиватель события «onFocus ()». Итак: если поле не пустое, вызовите: document.uploadform.submit ()
Используя этот метод, вам даже не нужна кнопка отправки. если вы хотите сделать скин для кнопки «Обзор», просто сделайте ее прозрачной, используя CSS, например:
input name = "myfile" type = "file" style = "width: 40px; -moz-opacity: 0; filter: alpha (opacity = 0)" onFocus = "somefunction ()"
Чтобы отменить загрузку, просто перенаправьте iframe в другое место, например:
input type = "button" value = "cancel" onClick = "document.uploadform.action = 'blank.php'; document.uploadform.submit ()"
Простите, если HTML выше охватывает несколько строк, я публикую здесь впервые.
Чтобы отслеживать прогресс, вам нужно добавить серверный прослушиватель, либо с PHP-5.2, либо некоторый скрипт на Perl, чтобы проверить, сколько байт было загружено до общего размера файла, проверенного до начала загрузки. этот интервал проверки может быть достигнут с помощью некоторого AJAX, или, если вы не знаете термин, посмотрите: HTTP-REQUEST. он запускает код на стороне сервера в фоновом режиме и выводит ответ, который вы видите в браузере, но здесь вы можете записать его в переменную и выполнять свои действия. Я надеюсь, что это было полезно для всех.