o array de bytes da variável “item” está vindo nulo. o restante dos dados do arquivo estão vindo, como nome do arquivo, tamanho etc.
só não vem o array de bytes correspondente aos dados do arquivo que foi feito o upload.
o array de bytes da variável “item” está vindo nulo. o restante dos dados do arquivo estão vindo, como nome do arquivo, tamanho etc.
só não vem o array de bytes correspondente aos dados do arquivo que foi feito o upload.
alguém tem alguma idéia do que pode ser?
abraços.[/quote]
Isso já aconteceu comigo também, demorei mais de um dia pra conseguir resolver… O UploadItem é chatinho mesmo, o ideal é transferí-lo para um File normal com streaming. Enfim, comigo isso funcionou pra upload de imagens (óbvio que eu ‘omiti’ algumas coisas, mas acho que com essa estrutura o seu problema já pode ser resolvido
public void listener(UploadEvent event) throws Exception{
UploadItem upload = event.getUploadItem();
if (upload.isTempFile()) {
File file = new File("pathDoArquivo");
InputStream in = new FileInputStream(upload.getFile());
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while((len = in.read(buf)) > 0){
out.write(buf, 0, len);
}
in.close();
out.close();
//daí já dá pra usar o file como se fosse o um File normal
} else {
ByteArrayOutputStream b = new ByteArrayOutputStream();
b.write(event.getUploadItem().getData());
}
}
Precisa nada disso, o motivo de o getData ta vindo nulo é que a gravacao do upload em arquivo temporario está ativada, pra quem usa richfaces e ajax4jsf, basta colocar o mapeamento do filtro do richfaces dessa forma:
Estou com dificuldade em aplicar o fileupload, então segui a exemplo acima. Adicionei o método acima e o filtro, porém esta gerando um erro e a página nem é exibida:
[color=red]SEVERE: Exception starting filter richfaces[/color]