Bom dia a todos(as). Sei que é chato esse lance de ficar repetindo tópicos, mas eu já li diversos e nenhum sanou minha dúvida por completo. A minha questão é a mesma, fazer upload de uma imagem. Vou descrever abaixo as minhas classes e explicar o q está acontecendo.
Requisito: Um administrador pode ter uma imagem. Existindo ela deve ser exibida no seu cadastro.
A partir de alguns tópicos do guj, montei minhas classes da seguinte forma:
Classe Responsável pelos uploads
public class UploadArquivo {
private String caminho;
private byte[] arquivo;
private String nome;
public String getNome() {
return nome;
}
public String getRealPath() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext context = (ServletContext) facesContext.getExternalContext().getContext();
return context.getRealPath("/");
}
public void fileUpload(UploadedFile upload, String type, String diretorio) {
try {
String nomeArquivo = upload.getFileName() + new java.util.Date().getTime();
this.nome = ApiSaaSUtilitario.toMd5(nomeArquivo) + type;
this.caminho = getRealPath() + File.separator + diretorio;
this.arquivo = upload.getContents();
File file = new File(this.caminho);
file.mkdirs();
} catch (Exception ex) {
// TODO Gravar exceções em um LOG
System.out.println("Erro no upload do arquivo" + ex);
}
}
public void gravar(){
try {
FileOutputStream fos;
fos = new FileOutputStream(this.caminho + File.separator + getNome());
fos.write(this.arquivo);
fos.flush();
fos.close();
} catch (Exception ex) {
// TODO Gravar exceções em um LOG
System.out.println(ex);
}
}
}
Código de envio:
UploadArquivo uploadArquivo = new UploadArquivo()
uploadArquivo.fileUpload(this.imagem, ".png", "\\WebContent\\resources\\upload");
uploadArquivo.gravar();
Resultado: As imagens estão sendo gravadas em D:\Projetos\WorkspaceJava.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SkyMedic\WebContent\resources\upload, sendo que deveria gravar em D:\Projetos\WorkspaceJava\SkyMedic\WebContent\resources\upload para que o componente de exibição de imagens reconheça
Como faço pra gravar na pasta que eu quero? Sendo que quando eu colocar o sistema em produção, esse caminho deverá ser obtido dinamicamente?
Espero ter sido claro…