Olá, tenho um sistema onde o usuário faz o upload de imagens para associa-las aos seus produtos cadastrados. Quando o upload das imagens é feito essas imagens são transferidas para uma pasta dentro do projeto(que está em produção), no entanto as imagens estão sendo colocadas no caminho informado quando executo o upload porém na pasta build.
Exemplo
Caminho que eu informo
"/web/resources/img/produtos/"
Caminho para onde esta sendo enviado
"/build/web/resources/img/produtos/"
O problema é que quando eu uso o um componente qualquer para exibir a imagem passando o mesmo caminho que eu informei no upload o componente não encontra a imagem.
<h:graphicImage id="img"
value="/web/resources/img/produtos/#{mbProdutos.produto.nomeDaImagem}"
width="220"/>
O componente está olhando para caminho informado enquanto a imagem está sendo gravada na mesma estrutura de pasta mas dentro do build.
Gostaria de saber se existe alguma forma de fazer o upload da imagem sem cair na estrutura de pastas dentro do build, ou o componente receber no ‘value’ uma expressão que aponte para o build.
Caso alguém tenha outra ideia para sugerir eu agradeço.
Upload da imagem
InputStream arquivo = "Recebo o inputStream por parametro";
File file = new File("/resources/img/produtos/");
OutputStream os = null;
try {
byte[] b = new byte[arquivo.available()];
os = new FileOutputStream(file);
while (arquivo.read(b) > 0) {
os.write(b);
}
} finally {
if (os != null) {
os.flush();
os.close();
}
arquivo.close();
}
Aplicação Web
Netbeans 7.1.1
Glassfish 3.1.2
Primefaces 3.4.2