Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Qual é a forma ideal para que nunca tenha 1 arquivo com o mesmo nome?

Qual seria a forma ideal para que quando faça o upload aconteça de SEMPRE ter um arquivo com o nome diferente. Pois tentei fazer um upload da mesma imagem duas vezes, e como esperado deu erro, pois já existe aquela imagem no meu servidor...Ou seja sempre q eu upar um arquivo ele grave um "nome próprio, que não venha a se repetir"

Caused by: java.nio.file.FileAlreadyExistsException: C:\Java\wildfly-12.0.0.Final\standalone\deployments\casadocodigo.war\arquivos-sumario\Thor 1.jpg
1 resposta
solução!

Olá Robson, se entendi vc quer que os uploads de arquivos fiquem com nomes únicos no servidor, certo!?

Existem muitas formas de fazer isso. Uma que gosto é baseado no conteúdo do arquivo, gerar um hash e utilizar este hash como o nome do arquivo.

Algo mais ou menos assim:

MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(conteudoArquivo.getBytes());
byte[] digest = messageDigest.digest();

String filename = Hex.encodeHexString(digest);

// Salva o conteudo em filesystem
try (PrintWriter out = new PrintWriter(anexoRootFolder + File.separator + filename)) {
        out.print(anexo.getConteudo());
}

No código acima, dado que vc tenha o conteudoArquivo como String (por exemplo base64), então ele gera um MD5 do arquivo e transforma este MD5 em Hexadecimal, utilizando o resultado como nome do arquivo.

Uma vantagem desta abordagem é que um mesmo arquivo (em bytes) gerará o mesmo nome de arquivo, e neste caso vc poderia ignorar a gravação do arquivo pois o mesmo já existe.

Espero que ajude.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software