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 o caminho completo da imagem, por exemplo: quando dou um select em minhas categorias
ID - 1 Titulo = "Alimentação" Imagem = "C:\Users\Jilles Ragonha\uploads\categorias\ALimentacao-4269576342313247658.jpg Descrição = " Mercados,Lanchonetes,Padarias, etc"
Minha dúvida é a seguinte, esta correto salvar o caminho absoluto assim? Outra coisa, como faria para exibir essa imagem de volta, quando eu recuperar a lista de todas as categorias? Uma vez que o h:graphicImage e o p:graphicImage não conseguem ler uma imagem que está fora da pasta do projeto?