Estou usando:
vraptor-3.2.0
commons-fileupload-1.2.2
Continua dando o mesmo problema!
Estou usando:
vraptor-3.2.0
commons-fileupload-1.2.2
Continua dando o mesmo problema!
atualiza pro vraptor 3.3.1
Tentei atualizar, mas estou tendo erros estranhos na hora de subir. Uns erros loucos com scannotation
Ainda não tive tempo de parar pra resolver.
esse problema do scannotation já foi resolvido… se vc quiser usar a versão snapshot que resolveu:
https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.4.0-SNAPSHOT/vraptor-3.4.0-20110704.175134-7.jar
Tem previsao para saida da versão estável? Vou implementando outras coisas e quando sair a estavel volto nessa atualizacao, quero atualizar tambem a versao do jboss…
breve
Consegui corrigir o problema atualizando para a versao 6.1.0 Final do Jboss!
Obrigado a todos!
Lucas, me tira uma dúvida e pra salvar em banco de dados ? Oque mudo no código já que não irei salvar em nenhuma pasta.
public void atualizaTermo(Termo termo, UploadedFile fileInfo) throws FileNotFoundException, IOException {
if (fileInfo == null) {
System.out.println("\n\n\nErro upload, não foi selecionado o arquivo para UPLOAD\n\n");
} else {
File destino = new File("C:/Documents and Settings/Meus documentos/NetBeansProjects/SisSTM/web/downloads/" + fileInfo.getFileName());
destino.createNewFile();
InputStream stream = fileInfo.getFile();
IOUtils.copy(stream, new FileOutputStream(destino));
System.out.println("\n\n\nUpload feito com sucesso\n\n\n");
}
result.redirectTo(this).lista();//Após o upload, redireciona para a lista
}
Att Gordon
ao invés de copiar o stream pra um arquivo, copie-o para um ByteArrayOutputStream e salve esse byte[] no banco (pode ser num atributo da sua entidade anotado com @Lob)…
se eu não me engano o IOUtils já tem um método que transforma o InputStream em byte[]. Se não tiver tenta usar o ByteStreams do google guava.
Obrigado, funcionando posto a solução.
Tks
Att Gordon
Lucas, segue abaixo a mudança. Não sei se entendi, mas não salva no BD e nem dá erro… ou seja… pra onde foi o arquivo rsrsrrsrs
Segue a mudança da maneira como entendi:
public void atualizaTermo(Termo termo, UploadedFile fileInfo) throws FileNotFoundException, IOException {
if (fileInfo == null) {
System.out.println("\n\n\nErro upload, não foi selecionado o arquivo para UPLOAD\n\n");
} else {
InputStream stream = fileInfo.getFile();
IOUtils.copy(stream, new ByteArrayOutputStream());
System.out.println("\n\n\nUpload feito com sucesso\n\n\n");
}
result.redirectTo(this).lista();//Após o upload, redireciona para a lista
}
Att Gordon
guarda o BAOS em uma variável, e depois salva o baos.getBytes() no banco… vc precisa colocar um atributo byte[] no termo
Lucas, ainda não rolou, estou errando e não acho .
Modelo
--------[code]
//omitido outros metodos
@Lob @Basic(fetch= FetchType.EAGER)
@Column(name = “file”)
private byte[] file;
//gets sets
//omitido os gets/sets
[/code]
Dao
--------
//omitido outros metodos
public void atualiza(byte[] buffer) {
Transaction tx = session.beginTransaction();
session.save(buffer);
tx.commit();
}
Controller
-------[code]
public void atualizaTermo(Termo termo, UploadedFile fileInfo) throws FileNotFoundException, IOException {
if (fileInfo == null) {
System.out.println("\n\n\nErro upload, não foi selecionado o arquivo para UPLOAD\n\n");
} else {
byte[] buffer;
InputStream stream = fileInfo.getFile();
IOUtils.copy(stream, new ByteArrayOutputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
buffer = baos.toByteArray();
dao.atualiza(buffer);
System.out.println("\n\n\nUpload feito com sucesso\n\n\n");
}
result.redirectTo(this).lista();//Após o upload, redireciona para a lista
[/code]
Dei uma lida sobre BAOS, mas não entendi como usa-lo junto ao hibernate e vraptor.
Att Gordon
vc está copiando pro output errado:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
IOUtils.copy(stream, baos);
buffer = baos.toByteArray();
dao.atualiza(buffer);
e no dao não é pra mandar salvar o buffer, é pra colocar o buffer na entidade e mandar salvar a entidade
Correto! Muito obrigado.
Att Gordon
Pessoal estou fazendo o upload mais esta vindo nulo quando
será que alguem pode me ajudar?
Qual versão do vraptor você está usando? Tive esse problema usando a 3.2.1. Pois o interceptador que deveria pegar o request estava sem a anotação e simplesmente não rodava. Caso você possa atualize a sua versão do vraptor. Caso não possa faça como eu:
Simplesmente extendi a classe CommonsUploadMultipartInterceptor (o interceptador que deveria ter as anotações @Intercepts e @RequestScoped), adicionando as anotações corretamente, assim o vraptor chama a minha instancia para tratar o upload, e minha instancia chama o proprio vraptor… só isso:
@Intercepts
@RequestScoped
public class FileUploadInterceptor extends CommonsUploadMultipartInterceptor {
public FileUploadInterceptor(HttpServletRequest request, MutableRequest parameters, MultipartConfig config, Validator validator) {
super(request, parameters, config, validator);
}
@Override
public boolean accepts(ResourceMethod method) {
return super.accepts(method);
}
@Override
public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException {
super.intercept(stack, method, resourceInstance);
}
}
estou usando a 3.3.1 eu tenho que importar o commons-fileupload para funcionar?
sim
Agora funcionou obrigado pessoal