Upload com progressão

Ola pessoal,

Uma duvida, alguem ja usou algum componete de upload que mostre a progressão desse arquivo ?

Tem um no sf.net mas ele nao ta 100% (ou eu sou um nó cego, q nao é muito dificil)

Valew

Acho que não é difícil de fazer, você tem que abrir um socket no servidor e mandar os arquivos.

Então, como você controla o Stream, você pode contar os bytes que você está enviando do lado do cliente.

Parece trivial.

“Parece trivial” eh a chave pra ser espancado, torturado, ralado e internado numa UTI pela máquina :smiley:

Fazer uploads HTTP atraves do browser com uma barra de progresso fora daquela que já tem em todo santo browser nao eh nada trivial, e demanda um bocado de codigo. Vale tanto a pena assim?

hehehehehe…, boa cv, mas olha só.

Tenta fazer um download realmente grande, tipo 1 giga ou mais.

Eu trabalhei com uma aplicação multimídia onde era necessário fazer upload de arquivos desse porte, imagine só.

A sua sessão HTTP expira, em condições normais.

Pense nisso ! Não é questão de “vale a pena?”, mas sim de “funciona ?”.

E tem mais, operar Streams via sockets é muuuuuuuuuuuito trivial ! :stuck_out_tongue:

A propósito, eu não conheço nenhum “santo” browser com “barra de upload” (no máximo de download).

Ueh, sempre que vc envia um arquivo naqueles forms de upload, a barra de progresso do browser te informa quanto falta pra terminar de mandar a requisicao… como geralmente 90%+ da requisicao eh o arquivo…

Mentalidade de aplicacoes desktop, versao WWW :smiley:

Rafael

Certa vez vi um componente que fazia isso , em php. Achei interessante e fui ver como ele funcionava. Basicamente, ele redirecionava o upload para um CGI perl e o CGI ficava recebendo os dados (interpretando o post na mao) e ficava escrevendo em um arquivo temporario a quantidade de bytes ja processado. Um outro frame ficava dando reload e a partir da quantidade de bytes ja recebidos, atualizava o progresso.

Fazer isso em java sera um pouco trabalhoso. Primeiro acredito que seja necessario implementar Um Servlet (Nao um HTTPServlet) para poder parsear todo o header e ir lendo o post do arquivo sobre demanda. Ai seria de armazenar na secao do usuario a quantidade de bytes ja lidas, de tempo em tempo. O outro frame eh mais tranquilo de fazer, soh montar uma barra com essa informacao.

Fala camarada pesquisando nos topicos do guj sobre o assunto e na internet achei o seu post e resolvi aproveitar para deixar uma referencia que talvez ajude na sua dúvida.

http://www.onjava.com/pub/a/onjava/2003/06/11/jsp_progressbars.html?page=2

[quote=anser]Ola pessoal,

Uma duvida, alguem ja usou algum componete de upload que mostre a progressão desse arquivo ?

Tem um no sf.net mas ele nao ta 100% (ou eu sou um nó cego, q nao é muito dificil)

Valew[/quote]

Seria possivel talvez implementar isso (em particular no Webwork) usando o executeAndWaitInterceptor?

hum…

Que tal isso:

http://www.learntechnology.net/content/ajax/ajax_upload.jsp

[quote=apfmiranda]Que tal isso:

http://www.learntechnology.net/content/ajax/ajax_upload.jsp[/quote]

na época que foi criado esse tópico, ajax era realidade pra pouca gente! ehhehe

Como as coisas evoluem em 3, 4 anos!

Mta loucuragem! ehhehe

Misael.

Sem dar muitos detalhes, mas dando os caminhos das pedras:

Use a Commons fileUpload
http://commons.apache.org/fileupload/

Use o ProgressListener
http://commons.apache.org/fileupload/apidocs/org/apache/commons/fileupload/ProgressListener.html

No método update, atualize um atributo da sessão.
No lado do Browser, em uma outra janelas, um frame, qq coisa, crie um ajax que de tempo em tempo aciona um servlet, action que seja que retorne o valor do atributo atualizado pela sessão. Mostre este valor da forma que você quizer.

Pronto !

Mais simples que isso só usando o link que o apfmiranda passou :wink:

PS: Putz !! Agora que eu vi que o tópico é de 2004.