Duvida upload e exibição de imagens com jsf

2 respostas
javamysql
J

Fala pessoal tudo bem?
Seguinte tenho um projeto onde em uma tela eu cadastro uma categoria para o produto. Cada categoria terá uma imagem para representa-la.
Bom criei um formulário, e usando o componente fileUpload do primefaces, faço upload do arquivo, onde no meu listener eu pego o diretorio que a imagem esta sendo gravada e seto como um string na minha entidade Categoria–>Imagem
Ficando desse jeito:

public void fileUploadCategoria(FileUploadEvent event) {
       try {

        String pasta = System.getProperty("user.home");
        String diretorio = "/uploads/categorias";
        File diretorioFinal = new File(pasta + diretorio);

        if (!diretorioFinal.exists()) {
            diretorioFinal.mkdirs();
        }

        Path folder = Paths.get(pasta + diretorio);
        String fileName = FilenameUtils.getBaseName(event.getFile().getFileName());
        String extension = FilenameUtils.getExtension(event.getFile().getFileName());
        Path file = Files.createTempFile(folder, fileName + "-", "." + extension);

        String caminho = file.toString();
        caminhoDaImagem(caminho);

        try (InputStream input = event.getFile().getInputstream()) {
            Files.copy(input, file, StandardCopyOption.REPLACE_EXISTING);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Sucesso", "Categoria inserida com êxito !"));

        }

    } catch (Exception e) {
        System.out.println("Erro no upload da imagem: " + e);
    }
}

O que acontece, ele esta salvando no banco dessa maneira:

ou seja… ele grava o caminho absoluto e completo
1 - Isso é errado?
2 - Como faço para essa imagem ser exibida após? pois os componentes (h:graphic Image ou o do primefaces) nao aceitam o caminho externo do arquivo e nao consigo exibir a imagem. Como proceder?

2 Respostas

M

Veja os valores das variáveis pasta e diretório. Veja também os valores que estão no objeto file, enfim teste todas as variáveis e objetos.

J

Opa marcos, esta tudo ok os valores, tanto que no Upload esta perfeito, ele faz o upload e esta salvando o caminho no banco, e a imagem fica gravada na pasta q eu escolhi…
no banco que é akela segunda imagem fica o caminho absoluto do arquivo, isso eh errado?
outra coisa, queria orientação sobre como exibir essa imagem sendo que eu soh tenho o caminho dela

Criado 5 de julho de 2016
Ultima resposta 6 de jul. de 2016
Respostas 2
Participantes 2