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

Erro InvalidPathException

Boa noite!

Desculpe, não percebi que o tópico estava marcado como solucionado!

Sim, estou utilizando o Windows, adicionei uma linha para imprimir no console o retorno e foi possível constatar que a linha está retornando o caminho completo.

public String write(Part arquivo, String path) {
        String relativePath = path + "/" + arquivo.getSubmittedFileName();
        System.out.println(arquivo.getSubmittedFileName());    
        String fullPath = SERVER_PATH + "/" + relativePath;
        try {
            arquivo.write(fullPath);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        return relativePath;
    }

Impressão no console:

19:00:02,620 INFO  [stdout] (default task-1) C:\casadocodigo\android-featured_large.png

Erro:

ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /casadocodigo/livros/form.xhtml: javax.servlet.ServletException: java.nio.file.InvalidPathException: Illegal char <:> at index 22: /casadocodigo/livros/C:\casadocodigo\android-featured_large.png

Caused by: javax.faces.el.EvaluationException: java.nio.file.InvalidPathException: Illegal char <:> at index 22: /casadocodigo/livros/C:\casadocodigo\android-featured_large.png

O que pode ser feito a respeito?

3 respostas
solução!

Oi Cleiton,

Alguns navegadores enviam um caminho de arquivo inteiro.

Vamos tentar fazer uma alteração nesse código para remover o path do seu getSubmittedFileName.

Mude esse trecho:

String relativePath = path + "/" + arquivo.getSubmittedFileName();

Troque por:

String fileName = Paths.get(arquivo.getSubmittedFileName()).getFileName().toString();
String relativePath = path + "/" + fileName;

Veja se resolve o problema

Abraço!

Aleluia!

Até que enfim deu certo! Muito obrigado pela ajuda Otávio!

Por nada amigo,

Bons estudos ;)