#gwt #java
Можно ли сделать индикатор процесса загрузки файла на сервер (отображать процент
загруженного файла) без GET запросов в течение загрузки (очень популярный пример в
интернете)?
Ответы
Ответ 1
Взгляните на библиотеку gwtupload — она очень проста в использовать и прекрасно работает во всех браузерах и ОС, я проверял. Она использует Ajax запросы для расчета прогресса. Кстати SWFUpload не работает в Linux и Mac. Пока что это лучшее решение для GWT.Ответ 2
Ещё можно использовать comet, но это довольно мучительно, много проблем с переносимостью. Зато latency будет намного лучше, чем у нескольких GET'ов.Ответ 3
ну многие юзают флешь - ам скорее всего что то встроенное есть - не специалист - говорить не буду. возможно есть какие то другие библиотеки насчет сервера - вы получаете post запрос. возможно в заголовке будет указан размер пакета(файла) - если поток парсите (по крайней мере я такую задачу делал на апаче - есть память-буфер на сервере - 2 метра и юзер заливает 100 метровый файл - алгоритм мутный очень сильно привязанк веб протоколу, но можно сделать однопроходным). ну так вот в подобном алгоритме вы всегда можете понять сколько уже сохранили от клиента. если отнять от величину указанной в заголовке уже полученный размер - и сохранить величину в какой нибудь memcache - то периодическим вторым запросом от клинта можно получать и отображать информацию о загрузке. Делать руками - можно но слишком долго и муторно. возможно некоторые веб серверы автоматически предоставляют нужный функционал - например какой нибудь каллбек при считывании очередных 2 мегабайт от клиента я делал это на с. но в яве (в сервлете) тоже возможно получить поток и парсить его самостоятельно.Ответ 4
Советую посмотреть, как работает GMail при прикреплении файла к письму. Посылаемые запросы можно просмотреть с помощью Fire Bug.Ответ 5
без запросов - никак))) только очень примерно, и то парочку придется сделать делай их просто редкими, вернее, в начале частые, считай скорость, а потом уточняй редкими запросами хотя, возможно, это и вытягивается из браузера. но примеров не встречал. думаю, проще кинуть 5 GET
Комментариев нет:
Отправить комментарий