Вход

Просмотр полной версии : отследить загрузку файла с сервера


bes
05.03.2015, 20:55
http://javascript.ru/forum/offtopic/47364-obsuzhdenijj-tred-45.html#post359629

возможно глупый вопрос, но я не нашёл на него ответа: а реально ли отследить загрузку файла в ответ на стандартную отправку формы?

то есть я отправляю форму стандартным образом (без ajax), сервер мне шлёт в ответ
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=example.txt

в итоге, данные которые пришли с сервера, сохраняются в файл example.txt

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

во фрейм отправить ответ никак, так как выскакивает ошибка несовпадения протоколов
где-то увидел, что можно ставить куку в ответе, но при принятии файла кука приходит, но не ставится

хочется понять, решаема задача или нет

laimas
05.03.2015, 21:34
если я запущу некоторый прелоадер, то нужно поймать момент полной загрузки файла

А смысл, если по окончании отправки страница будет перегружена?

danik.js
05.03.2015, 22:42
Вроде браузер и без того прекрасно индицирует процесс загрузки, в том числе показывает проценты.
Старое обсуждение на stackoverflow (http://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download). Вряд ли что-то еще можно придумать.

bes
05.03.2015, 23:49
А смысл, если по окончании отправки страница будет перегружена?
извиняюсь, здесь следовало уточнить дополнительные моменты:
- если у формы стоит target="iframe_name", то при принятии файла onload фрейма не срабатывает
- если не ставить target у формы: вешаю document.body.onbeforeunload, открываю страницу, window.onload отрабатывает, нажимаю на кнопку отправки, onbeforeunload срабатывает, файл загружается, window.onload не отрабатывает
- если в предыдущем случае запускать прелоадер, то происходит следующее: нажимаю на кнопку отправки, появляется прелоадер, сообщение onbeforeunload, нажимаем покинуть страницу, файл загружается, прелоадер не исчезает


Вроде браузер и без того прекрасно индицирует процесс загрузки, в том числе показывает проценты.
не совсем понял про какой браузер идёт речь, который показывает процент загрузки :)


Старое обсуждение на stackoverflow (http://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download). Вряд ли что-то еще можно придумать.
немного другими словами гуглил, не встретил данный вопрос, там как раз про куку, про которую я видел в другом месте
сейчас опробовал - как и раньше Set-Cookie приходит, но кука не ставится
но прикол в том, что серверная часть у меня java-сервлет, сейчас опробовал на php и кука нормально ставится
возможно там есть какие-то особенности, хотя, на первый взгляд, не сложнее чем setcookie в php
addCookie (https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html#addCookie(javax.servlet.h ttp.Cookie))
завтра на свежую голову буду разбираться

bes
06.03.2015, 06:42
не совсем понял про какой браузер идёт речь, который показывает процент загрузки
проснулся и осознал, о чём была речь :)
http://i11.pixs.ru/storage/8/1/8/dfilepng_7549328_16339818.png

bes
08.03.2015, 15:06
решение проблемы было простым до невозможности - я крайне редко юзал куки :D
куку у меня ставила страница, которая была не в одном расположении с той страницей, которая делала запрос, и, так как особых мер не было принято, она была доступна по пути той страницы, к которой направлялся запрос и не доступна на исходной странице, которая делала этот запрос