Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Solução para upload de arquivos grandes particionados

Boa tarde Senhores! Tenho uma aplicação web feita em java 8 com spring mvc 4.3... .de gestão de qualidade SIMPLES, (indicadores, não conformidades, planos de ações, etc).

Minha missão é o seguinte: Tenho clientes que trabalham em locais de baixo sinal de net e precisam fazer uploads de arquivos de até 1GB para meu servidor. O que acontece é que, havendo uma queda de sinal, o upload precisa ser reiniciado do zero. Este é o problema! Eu estava pensando em criar um applet, ou um programa desktop tipo utorrent na mão particionando o arquivo e tal. Alguém já chutou essas pedras? Conhece um caminho melhor? Applet é complicado por questões dos browsers? Ficaria feliz pela orientação. Obrigado.

3 respostas

Olá Leandro!

Temos um artigo no blog que fala sobre:

https://blog.alura.com.br/upload-de-arquivos-em-java/

Ele te ajuda?

solução!

Olá Leandro! Tudo bem?

Este problema que você enfrenta é um problema bastante comum quando se fala de EDI (Troca eletrônica de dados)

Infelizmente eu não conheço nenhuma ferramenta open source que realiza tal façanha, mesmo eu tendo experiência de soluções de trocas de informações como matriz e filiais de lojas, essa complexidade acaba sempre recaindo para o desenvolvedor.

Apenas como curiosidade, a IBM possui um produto para resolver esse problema, chamado Sterling

https://bridgesgi.com/solutions/ibm-sterling-file-gateway/

De qualquer modo, em se pensar em um programa que possa fazer isso, seguem algumas recomendações baseadas em minha experiência.

1) Evite utilizar webservices para envio de arquivos grandes.2) Utilize protocolos de envio de arquivos simples, mas que ofereçam os requisitos de segurança necessários (ex. SFTP). 3) Implementar garantia de entrega é fundamental para evitar que dados se corrompam, ou partes do arquivo se percam. 4) Permitir monitorar o processo de envio do arquivo, de forma que seja possível se antecipar a um possível impacto no seu negócio pelo não recebimento de um arquivo. 5) Faça robusto ao ponto de poder escalar para múltiplos envios de diversas fontes. 6) Permita retransmissão no caso de falhas com limite de retentativas. 7) Seja inteligente para utilizar os momentos em que a rede apresente menor latência - geralmente quando se faz o menor uso de banda.

Abraço e sucesso,

Rodrigo

Obrigado pelos comentários Guilherme e Rodrigo, vou precisar ponderar estes pontos mencionados. Eu estou pensando em usar a API de Streaming e do lado do cliente jQuery-File-Upload.