|
|
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
создал сервис, загружает файл. как следить за ходом загрузки и отправлять клиенту информацию об этом? (загружено 1%. 2%.. .100%) . вот код загрузки Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 15:28 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Взять готовый контрол: http://blueimp.github.io/jQuery-File-Upload/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 15:33 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, мне контрол не нужен. это сервис принимает/возвращает формат-JSON а клиент пишу не я, мне только отправлять информацию а там контрол итп сами создадут на основе этой информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 15:51 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10мне контрол не нужен. это сервис принимает/возвращает формат-JSON а клиент пишу не я, мне только отправлять информацию а там контрол итп сами создадут на основе этой информации. Понятно что ничего не понятно. Зачем клиенту отправлять аплоад, если он и сам может за прогрессом следить? Клиенту можно отправлять прогресс обработки файла, если он долгий. Это делается через COMET или WebSocket, но технологию тут тоже должна диктовать клиентская часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 15:59 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, как реализовать отправку прогресс обработки файла? посоветуете пжл статью, ссылку или пример, если можно. тот кто пишет клиент, тоже плохо разбирается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 16:05 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10, Я использовал вот эту либу https://code.google.com/p/jquery-stream + Асинхронный Servlet 3.0 Аплоад файла у вас уже есть? Он запускает фоновый поток. - Это желательно делать средствами JEE, так как через Thread/ExecutorService будет геморная утечка класслоадера. Этот фоновый поток пишет JSON в AsyncContext.getResponse().getWriter(); AsyncContext же создаётся в обработчике "долгого" GET запроса aka COMET и шарится через HashMap. Этот подход довольно устаревший. jquery-stream уже давно не поддерживается. А вместо COMET все рекомендуют использовать WebSocket - есть даже либы, которые его эмулируют для старых браузеров. Код для Java по-моему был в jquery-stream примерах. Если надо, могу скинуть примерные наброски. Но я бы рекомендовал поискать что-то посовременнее для решения этого вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 16:33 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, да, аплоад уже есть, все прекрасно работает, меня просили отправить клиенту инфо о прогрессе. можно даже просто 1,2,3,4...100. итого 100 раз отправить респонс а он там сам как то реализует у себя UI. я подумал в начале брать MultipartFile-размер и каждый несколько миллесекунд проверять размер файла где хранить буду, перевести на процент и отправить ему это значение. спс вам за подсказку. буду копать в сторону WebSocket. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 16:50 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10да, аплоад уже есть, все прекрасно работает, меня просили отправить клиенту инфо о прогрессе. можно даже просто 1,2,3,4...100. итого 100 раз отправить респонс а он там сам как то реализует у себя UI. я подумал в начале брать MultipartFile-размер и каждый несколько миллесекунд проверять размер файла где хранить буду, перевести на процент и отправить ему это значение. спс вам за подсказку. буду копать в сторону WebSocket. Это бред. Конретно аплоад на сервер отправлять клиенту смысла нет. Клиент может сам смотреть сколько он отправил. Если нужен только аплоад, можно JSON прогресс писать в Response и сразу флашить. Задача клиента его читать. Но это хрень. Клиенту не нужно от сервера узнавать сколько же он уже отправил. Он сам отправляет и сам знает сколько ушло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 16:53 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Blazkowicz...Если нужен только аплоад, можно JSON прогресс писать в Response и сразу флашить... можно чуть подробнее, или пример ближе к моему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 16:58 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10Blazkowicz...Если нужен только аплоад, можно JSON прогресс писать в Response и сразу флашить... можно чуть подробнее, или пример ближе к моему В вашем коде никак, потому что сервер полностью загрузил файл к тому времени как вызовется ваш контроллер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 17:02 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Гугл нашел умников http://forum.spring.io/forum/spring-projects/web/23482-file-upload-progress-bar Вот столько приходится уродского кода делать, вместо того чтобы просто смотреть статус на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 17:06 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 17:10 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
BlazkowiczГугл нашел умников http://forum.spring.io/forum/spring-projects/web/23482-file-upload-progress-bar Вот столько приходится уродского кода делать, вместо того чтобы просто смотреть статус на клиенте. наверно они тоже плохо знают яву и их тоже грузили :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 17:27 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10 Код: java 1. 2. 3. Откуда, по вашему, на диске сервера может взяться файл с данным клиента? Хотите знать "что-то" в процессе получения данных от клиента - переопределяете doPost() в наследнике и самостоятельно работаете с потоком ввода. Включая разбор того или иного mime-типа. Чтобы иметь возможность в процессе "чего-то" отвечать клиенту - используете асинхронные сервлеты из 3.0+. Предварительно прочитав спецификацию HTTP предмет "кода 100" и не обижаясь на проксю, которая не поддержит тщательно задуманный авангард. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 18:32 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov и не обижаясь на проксю, которая не поддержит тщательно задуманный авангард. Вроде всё нормально с проксей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 18:51 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Нормально, но без гарантий. P.S. Мне, собственно, вообще непонятно: задлянафига было веб-сокеты придумывать, если всё необходимое можно было сделать в рамках "классического" HTTP, а серверы и пользовательские агенты - и так и так доделки требуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 19:37 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov... переопределяете doPost() в наследнике и самостоятельно работаете с потоком ввода... т.е. в моем примере RequestMethod.POST? или вообще мой пример не годится? Basil A. Sidorov...и не обижаясь на проксю, которая не поддержит тщательно задуманный авангард. если не поддержит, зачем строит этот авангард? может есть события между поступление запроса и передачи файла, чтоб прописаться и обработать? и вообще слежка за прогресс загрузки делается в сервере или зная мою тупость(я чайник в этом плане) повесили на меня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 09:55 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10т.е. в моем примере RequestMethod.POST? или вообще мой пример не годится? Наша песня хороша, начинай сначала? Basil A. Sidorovвообще слежка за прогресс загрузки делается в сервере или зная мою тупость(я чайник в этом плане) повесили на меня? Покажи тому кто повесил контрол с прогрессом и скажи что это задача клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 10:14 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
спс за помощь ребята. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 12:01 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Blazkowiczтак как через Thread/ExecutorService будет геморная утечка класслоадера А зачем он тут вообще? Application scope bean вполне справится с хранением Мапы НомерСессии->%. Зачем тут тут еще поток если их и так два? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 14:44 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, А это же REST - сервер ничего не должен помнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 14:46 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев А зачем он тут вообще? Application scope bean вполне справится с хранением Мапы НомерСессии->%. Зачем тут тут еще поток если их и так два? Хороший вопрос. Действительно можно оптимизировать. Просто фоновая обработка файла запускается по POST. А GET является информативным. Если перенести запуск обработки в GET, то можно и не создавать дополнительных потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 15:46 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
ZVER-10если не поддержит, зачем строит этот авангард?Затем, что кроме корректно работающих проксей существуют среды, где прокси вообще не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2015, 17:40 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА GET является информативным. Если перенести запуск обработки в GET, то можно и не создавать дополнительных потоков. Можно даже сделать админку которая будет показывать прогресс всех пользователей загружающих файлы. И статистику кто сколько грузил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 09:39 |
|
||
|
REST загрузка файла
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевBlazkowiczА GET является информативным. Если перенести запуск обработки в GET, то можно и не создавать дополнительных потоков. Можно даже сделать админку которая будет показывать прогресс всех пользователей загружающих файлы. И статистику кто сколько грузил. Ещё одна проблема в том что нотификации в GET надо аккуратно ловить через try...catch, чтобы исключение записи не прервало обработку, если клиент закрыл браузер или просто отвалился. Поэтому, ИМХО, отдельный поток как-то проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2015, 10:08 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38984951&tid=2125275]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 493ms |

| 0 / 0 |
