Gravar imagem em disco

1 resposta
C

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.

1 Resposta

V

Qual o erro ?

Criado 8 de fevereiro de 2010
Ultima resposta 8 de fev. de 2010
Respostas 1
Participantes 2