Olá pessoal tenho um método que grava um byte[] em disco, que funciona perfeitamente. Só que quando executo em um ambiente web este método não grava a foto, não consigo entender.
// Classe utilitária para manipulação de arquivos
public class FileUtils {
private final static String FILE_SEPARATOR = File.separator;;
private final static String USER_DIR = new File("").getAbsolutePath();
private final static String PATH_WEB_CONTENT = "WebContent";
private final static String PATH_IMAGE = "imagens";
private final static String PATH_FOTOS_ALUNOS = "fotosAlunos";
private final static String PATH_FOTOS_ALBUNS = "albuns";
public File getDirFotoAluno() {
return new File(USER_DIR + FILE_SEPARATOR
+ PATH_WEB_CONTENT + FILE_SEPARATOR + PATH_IMAGE
+ FILE_SEPARATOR + PATH_FOTOS_ALUNOS);
}
public String adapterPathForOS(File file)
{
String valor = file.getPath();
if(FILE_SEPARATOR.equals("\\"))
{
valor = valor.replace("\\", "\\\\");
}
else
if(FILE_SEPARATOR.equals("/"))
{
valor = valor.replace("/", "//");
}
return valor;
}
public boolean [b]persistFotoAluno[/b](ByteArrayOutputStream baos,Alunos alunos, String format) {
FileOutputStream f;
try {
f = new FileOutputStream(this.adapterPathForOS(this.getDirFotoAluno()) + FILE_SEPARATOR + FILE_SEPARATOR + alunos.getIdAluno() + "." + format);
f.write(baos.toByteArray());
f.close();
} catch (Exception ex) {
return false;
}
return true;
}
public static void main(String[] args) {
FileUtils f = new FileUtils();
Alunos a = new Alunos();
a.setIdAluno(13);
File fi = new File("");
fi.getAbsoluteFile();
f.[b]persistFotoAluno[/b](new ByteArrayOutputStream(), a,"jpg");//Grava legal
}
}
/*Quando executo como uma aplicação java este metodo funciona,a foto é gravada perfeitamente, mas o problema está neste método abaixo quando executo em um ambiente WEB*/
//Bean com o escopo session que é chamado pela minha view para persistir o aluno através JPA
public class MBincluirAluno {
private UploadItem[] items;
Alunos aluno = new Alunos();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
public void upload(UploadEvent event) {
try {
baos.write(event.getUploadItem().getData());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void paint(OutputStream stream, Object object) throws IOException {
baos.writeTo(stream);
}
[b]public String persist() {[/b]
[b]FileUtils fu = new FileUtils();[/b]
Alunos a = new Alunos();
a = this.getAluno();
a.setIdAluno(13);
[b]fu.persistFotoAluno(baos, a, "jpg");[/b]//Não grava de jeito nenhum
//AlunosDao alunosDao = new AlunosDao();
//alunosDao.persist(a);
return null;
[b]}[/b]
}
Estou utilizando tomcat, eclipse ganimede, jpa/hibernate, jsf e richFaces.