1
resposta

[Dúvida] Upload arquivo de 1GB

Pessoal,

Tenho a seguinte situação no sistema que eu dou manutenção, atualmente o mesmo aceita anexo(vídeo) de 500mb, o cliente solicitou para que seja de 1GB. Em testes com 1gb, ocorre erro o buffer de memória, hoje o servidor esta reservado 4gb ram sem possibilidade de aumentar. Gostaria de saber se existe alguma forma que o java realize o upload de um 1gb em partes para evitar esse erro buffer e qual plugin/biblioteca poderia estar usando para contornar isso?

Agradeço atenção desde já!!

1 resposta

Olá Cleberson,

Entendo sua situação e realmente pode ser um desafio realizar o upload de arquivos grandes sem causar problemas de buffer de memória. Uma solução possível é utilizar a técnica de "multipart upload", que consiste em dividir o arquivo em partes menores e realizar o upload de cada parte separadamente. Dessa forma, você evita que a memória seja sobrecarregada com o arquivo inteiro.

Existem algumas bibliotecas que podem ajudar nessa tarefa, como o Apache Commons FileUpload e o AWS SDK for Java, que possuem suporte para multipart upload. Além disso, é importante verificar se o servidor de destino também suporta essa técnica.

Aqui está um exemplo de como realizar o upload de um arquivo em partes utilizando o Apache Commons FileUpload:

// Criar um objeto ServletFileUpload
ServletFileUpload upload = new ServletFileUpload();

// Definir o tamanho máximo das partes (no exemplo, 10MB)
upload.setFileSizeMax(10 * 1024 * 1024);

// Dividir o arquivo em partes e realizar o upload de cada uma
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
    FileItemStream item = iter.next();
    InputStream stream = item.openStream();
    // Realizar o upload da parte atual
}

Espero ter ajudado e bons estudos!