tenho um jsp onde envio um arquivo, botei o multipart e tudo certinho…
tenho uma controller onde recebo ele certinho:
String realPath = requestInfo.getServletContext().getRealPath(
"/anexos");
File destino = new File(realPath, anexo.getFileName());
IOUtils.copyLarge(anexo.getFile(), new FileOutputStream(destino));
tenho um problema o jboss ta fazendo deploy em um temp… isso é normal O.o?
entao quando pego o caminho relativo me vem isso aqui “D:\programas\jboss-6.0.0.20100216-M2\server\default\tmp\5c4o52s-8it1h5-gd06q3me-1-gd06r4mh-9t\meuprojeto.war” ou seja se eu renicia o servidor eu perco meus anexos pq eles ficaram em outro tmp =/
tenta fazer o deploy com uma pasta (o war deszipado) e vê se acontece a mesma coisa (acho que sim)
o ideal é vc configurar em algum lugar uma pasta física na máquina do servidor, e usar essa pasta
jingle
VALEU ajudo muito com essa dica de não gerar o .war, com a pasta funciona redondo.
jingle
mais uma coisa…
como faço pra carregar um input file?
tentei carrega usando
e tentei assim tbm…
onde no anexo vem somente nome do arquivo exemplo imagem.jpg
Lucas_Cavalcanti
carregar?
o que vc quer fazer exatamente, mostrar o anexo na tela? a imagem?
jingle
Lucas Cavalcanti:
carregar?
o que vc quer fazer exatamente, mostrar o anexo na tela? a imagem?
Não não, quero que só aparece o caminho já ta bom… preciso se eu for alterar a tela e clicar em salvar ele não salve null, salve exatamente o que tinha antes…
e outra coisa que estranhei é que se ponho um arquivo maior que 2mb a minha controller recebe TODOS os parametros null, não somente o anexo, tem como muda isso?
Lucas_Cavalcanti
geralmente não faz muito sentido preencher o input file no servidor… isso pq o caminho que vc coloca lá é o caminho na máquina do cliente, não no servidor… se eu não me engano o atributo value não funciona nesses inputs…
pra ele não salvar null, é só colocar o valor antigo no seu controller… o ideal é fazer algo assim:
hmmm beleza… vou tratar… e quando ao limite dos 2mb? é algo no vraptor? ou do input file mesmo?
Lucas_Cavalcanti
é o vraptor que limita, mas dá pra configurar…
só criar uma classe anotada com @Component que implementa MultipartConfig…
o problema é que se os outros parâmetros da requisição vêm junto com o arquivo que vc tah fazendo upload… se o arquivo é muito grande, não tem mto como separar os outros parametros sem parsear esse arquivo…
o ideal é vc não misturar o upload com o resto do formulário… faça um form só pro upload, e outro pro resto dos atributos… se vc der uma olhada nos sites por aí, é assim que eles fazem
jingle
segue eu na briga dos upload..... apareceu agora mais um porém...
-eu uso @put pra enviar meus formularios de alteração,
- seguindo aquele meu exemplo que quando anexava algo além dos 2mb de tamanho, enviava todos parametros null (desta forma eu consegui tratar. @post), porém quando utilizo o @put da erro antes de chegar no meu método (somente quando passa dos 2mb)...
fazer um upload você tá acrescentando uma coisa no sistema (um arquivo) sem saber onde ele vai ser guardado… então o form de upload deveria ser POST…
qto ao form de edição (sem upload) PUT é mais legal mesmo =)
jingle
Lucas Cavalcanti:
fazer um upload você tá acrescentando uma coisa no sistema (um arquivo) sem saber onde ele vai ser guardado… então o form de upload deveria ser POST…
qto ao form de edição (sem upload) PUT é mais legal mesmo =)
mas com PUTda erro antes mesmo de chega no meu método se ele passar dos 2mb de anexo e assim fica inviavel de eu tratar…
Lucas_Cavalcanti
sim, pq vc tah fazendo o put via _method, que eh um parâmetro do request… quando ultrapassa o tamanho do arquivo, não tem como recuperar os outros parâmetros do request, pq eles estão junto com o arquivo…
vc pode alterar o limite, fazer um request PUT de verdade (não sei se vai funcionar em todos os navegadores), ou separar o upload em outro form, com method=POST
da parte do VRaptor não sei se tem como a gente resolver isso, de qqer forma eu vou investigar…