Boa Noite a todos.
Estou utilizando VRaptor 3.
Tenho um controlador com uma action que recebe o upload de fotos.
Eu preciso gerar duas fotos ( dois arquivos ).
Um deles é a imagem original.
O outro é uma thumbnail.
O problema é que quando eu faço a primeira cópia para o disco, parece que o stream recebido da foto fica nulo, ou da a entender que “esteja em uso” pela outra função.
A pergunta é a seguinte: Como fazer o stream ser “duplicado” ou ser utilizado pelas duas funções?
Segue um trecho do código.
public void cadastrar(Imagem imagem, UploadedFile foto) {
// Aqui é o stream da foto
InputStream stream = foto.getFile();
// Criação de Diretórios...
// Criação dos arquivos
// Cria a foto
arquivo = new File(diretorio+tmpName+".jpg");
arquivo.createNewFile();
// Cria a thumbnail
thumbnail = new File(diretorio+"thumb_"+tmpName+".jpg");
thumbnail.createNewFile();
// Primeiro redimensiona a thumbnail ( Funciona sempre a primeira manipulação do stream, não importa se inverter essas linhas )
Utilitarios.gerarThumbnail(stream, new FileOutputStream(thumbnail), Configuracao.ALTURA_THUMB_ALBUM, 9);
// Agora copia a foto original para o disco ( Aqui já não funciona, mas se eu coloca-lo primeiro que o redimensionamento ele funciona )
IOUtils.copy(stream, new FileOutputStream(arquivo));
// Continuação do código...
}
Enfim, está ai a duvida. Espero que possa me auxiliar e servir de exemplo para outras pessoas.
Abraço a todos, fiquem com Deus.