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?
