Fala galera,
Já programo em outras linguagens mas só recentemente que comecei a me aventurar pelo mundo do java. Estou desenvolvendo um pequeno Dynamic Web Project no Eclipse usando PrimeFaces,JSP, Hibernate e TomCat. Basicamente se trata de vários formulários de cadastros e um deles é o cadastro de usuários. A parte do Domain, Bean, DAO e as paginas para listar, cadastrar, editar e excluir já estão prontas e funcionando, porém a tabela de usuário, na minha base de dados, tem um campo para foto(imagem), e é ai que está meu problema. Quero salvar somente o path da Foto(imagem) na base de dados, e na pagina do usuário quero poder adicione a foto, claro. Li muitas coisas no Google de como fazer usando o componente p:fileUpload, e confesso que consegui, em partes. O problema é que, eu quero que as imagens sejam salvas da maneira correta, por exemplo em uma pasta /imagens em meu projeto.
Não sei bem como seria.
Ao tentar usar o componente p:fileUpload consegui salvar em uma pasta no meu disco c: e não em uma suposta pasta do servidor. Qual seria a maneira correta para fazer isso acontecer? Existe alguma configuração no TomCat que tem que ser feita? Pretendo disponibilizar esses formulários na web, então gostaria de saber como é a maneira correta para fazer isso funcionar. Por favor, me ajudem =)
segue o codigo do metodo upload do meu bean
[code]public void upload(FileUploadEvent event) {
try {
String realPath = FacesContext.getCurrentInstance()
.getExternalContext().getRealPath("/");
// Aqui cria o diretorio caso não exista
File file = new File(realPath + "/imagens/");
file.mkdirs();
byte[] arquivo = event.getFile().getContents();
String caminho = realPath + "/imagens/"
+ event.getFile().getFileName();
// esse trecho grava o arquivo no diretório
FileOutputStream fos = new FileOutputStream(caminho);
fos.write(arquivo);
fos.close();
pathImage = caminho;
System.out.println("caminho da imagem salva é = " + caminho);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}`[/code]
E o codigo do componente no meu xhtml
<p:fileUpload fileUploadListener="#{usuarioBean.upload}" fileLimit="1"
fileLimitMessage="Excedido Limite de arquivos"
cancelLabel="Cancelar" label="Arquivo" uploadLabel="Anexar"
invalidFileMessage="Somente arquivos .jpg, .png ou .gif"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" value="#{usuarioBean.imagem}"
mode="advanced" skinSimple="true" />