Bom dia pessoal,
Gostaria de saber como posso colocar no request um arquivo obtido via input file, para depois chamar o método Dao para tratar o arquivo.
Posso usar o setAttribute ?
Para acessa-lo depois como faço?
Obrigado!
Bom dia pessoal,
Gostaria de saber como posso colocar no request um arquivo obtido via input file, para depois chamar o método Dao para tratar o arquivo.
Posso usar o setAttribute ?
Para acessa-lo depois como faço?
Obrigado!
o VRaptor já faz o tratamento do upload automático…
se o input é algo assim:
então vc vai usar no controller:
public void upload(UploadedFile arquivo) {
InputStream conteudo = arquivo.getFile();
String nome = arquivo.getFileName();
}
mais info:
http://vraptor.caelum.com.br/documentacao/downloading/
o VRaptor já faz o tratamento do upload automático…
se o input é algo assim:então vc vai usar no controller:
public void upload(UploadedFile arquivo) { InputStream conteudo = arquivo.getFile(); String nome = arquivo.getFileName(); }mais info:
http://vraptor.caelum.com.br/documentacao/downloading/
Obrigado Lucas
o VRaptor já faz o tratamento do upload automático…
se o input é algo assim:então vc vai usar no controller:
public void upload(UploadedFile arquivo) { InputStream conteudo = arquivo.getFile(); String nome = arquivo.getFileName(); }mais info:
http://vraptor.caelum.com.br/documentacao/downloading/
Lucas, peguei este códico na documentação:
@Resource
public class PerfilController {
private final PerfilDao dao;
public PerfilController(PerfilDao dao) {
this.dao = dao;
}
public void atualizaFoto(Perfil perfil, UploadedFile foto) {
dao.atribui(foto.getFile(), perfil);
}
}
Neste caso é feito o upload de um atributo de um bean.
No meu caso, preciso fazer upload de um arquivo que nao é atributo de ninguem, somente será lido e descartado.
Utilizei este código:
public void adicionaDemanda(UploadedFile arquivo) throws IOException {
InputStream file = arquivo.getFile();
if(file != null)
demandaProcessamento.adicionaDemanda(file);
}
Sendo que no jsp esta:
<input type="file" name="arquivo" />
O valor retornado é null. Não entendi o motivo, pois havia entendido que, o UploadedFile iria pegar o input file de nome arquivo, que é a injeção de dependencia.
Não é isso?
Obrigado
O valor retornado é null. Não entendi o motivo, pois havia entendido que, o UploadedFile iria pegar o input file de nome arquivo, que é a injeção de dependencia.
Não é isso?
Quando um nulo é retornado isso significa que o arquivo não foi enviado. A causa disso pode ser que você não colocou o enctype=“multipart/form-data” no seu formulário. Realmente isso não tem na documentação.
Quando um nulo é retornado isso significa que o arquivo não foi enviado. A causa disso pode ser que você não colocou o enctype=“multipart/form-data” no seu formulário. Realmente isso não tem na documentação.
Garcia, coloque o enctype no meu formulario conforme seu conselho.
Mas mesmo assim NullPointerException é jogada, o valor do arquivo recebidopublic void upload(UploadedFile arquivo), continua nulo.
Será que falta mais alguma coisa no formulario?
<form action="<c:url value="/demanda/adicionaDemanda"/>" enctype="multipart/form-data">
<fieldset id="formulario">
<input type="file" name="arquivo"/>
<input type="submit" value="Processar demanda"/>
</fieldset>
</form>
Obrigado
Sim, method=“post” no seu FORM.
Realmente, agora ele retorna o arquivo.
Mas eu nao consigo envia-lo como parametro para outro método. Debugando o erro esta na chamada do método:
public void adicionaDemanda(UploadedFile arquivo) throws IOException {
File file = new File("C:/" + arquivo.getFileName());
if(file != null)
new DemandaProcessamento().adicionaDemanda(file);
}
Agora me retorna NullPointerException, agora onde esta o problema?
Alguem pode me ajudar?
Obrigado!
Fmgasparino, recomendo a você ler a documentação e javadoc do vraptor. Trabalhar na base da tentativa e erro é muito ruim.
http://vraptor.caelum.com.br/javadoc/br/com/caelum/vraptor/interceptor/multipart/UploadedFile.html
Conforme a documentação do objeto UploadedFile ele te traz getFileName (que é o nome do arquivo temporário do upload) e getFile, que na verdade é um inputstream que te permite ler o conteúdo do arquivo.
O que você realmente precisa? Você precisa apenas do nome/endereço do arquivo ou você precisa trabalhar com o conteúdo do arquivo? Caso for a segunda opção o melhor é você ler esse inputstream do que passar o nome do arquivo como parametro.
Abraços
Fmgasparino, recomendo a você ler a documentação e javadoc do vraptor. Trabalhar na base da tentativa e erro é muito ruim.http://vraptor.caelum.com.br/javadoc/br/com/caelum/vraptor/interceptor/multipart/UploadedFile.html
Conforme a documentação do objeto UploadedFile ele te traz getFileName (que é o nome do arquivo temporário do upload) e getFile, que na verdade é um inputstream que te permite ler o conteúdo do arquivo.
O que você realmente precisa? Você precisa apenas do nome/endereço do arquivo ou você precisa trabalhar com o conteúdo do arquivo? Caso for a segunda opção o melhor é você ler esse inputstream do que passar o nome do arquivo como parametro.
Abraços
Garcia, obrigado pelas informações que disponibilizou.
Com base em seu comentario, peguei o arquivo e utilizei de forma correta, como InputStream.
Irei ler mais a documentação.
Muito Obrigado!