Ola tenho um upload de um único arquivo que já funciona porem preciso transformar-lo em um upload múltiplo.
Codigo de upload arquivo unico
@Path("/well/{well.name}/uploadFile21")@PostpublicvoiduploadFile21(Wellwell,finalUploadedFileFiledata,Stringmodulo,Stringpasta,Stringdestino){Stringpath;if(pasta!=null){path=WellUtil.PATH_WELL+sep+modulo+pasta;System.out.println("teste upload se pasta diferente null"+path);}else{pasta="";path=WellUtil.PATH_WELL+sep;System.out.println("teste upload se pasta = null"+path);}System.out.print("\n\n"+path);Responseresponse=newResponse();response.setName(Filedata.getFileName());Filefile=newFile(path,Filedata.getFileName());try{FileOutputStreamos=newFileOutputStream(file);IOUtils.copyLarge(Filedata.getFile(),os);response.setMsg(I18nUtils.getText("arq_env_ok",wellUtil.getLang()));result.use(xml()).from(file).serialize();}catch(IOExceptione1){Stringexcecao=e1.getMessage();response.setMsg("Erro: "+excecao);result.use(xml()).from(file).serialize();}}
Comecei a desenvolver pelas pesquisas que fiz mais estou meio travado como vou tratar essa lista de arquivos. Segue código abaixo
@Path("/well/{well.name}/uploadFile2")@PostpublicvoiduploadFile2(Wellwell,finalList<UploadedFile>Filedata,Stringmodulo,Stringpasta,Stringdestino){Stringpath;if(pasta!=null){path=WellUtil.PATH_WELL+sep+modulo+pasta;System.out.println("teste upload se pasta diferente null"+path);}else{pasta="";path=WellUtil.PATH_WELL+sep;System.out.println("teste upload se pasta = null"+path);}System.out.print("\n\n"+path);}
Quem puder me da uma direção do que devo fazer desde já obrigado.
<input type="file" id="files" name="files[]" multiple />
<input id="inputFile" name="Filedata" size="150" type="file" class="inputFile" multiple/>
Não sei se e necessário criar um javascript para passar esse array de dados.
Lucas_Cavalcanti
só uma dúvida:
funciona pra um arquivo só?
david.cs20
Para um unico arquivo só funciona se no controller estiver da seguinte maneira:
@Path("/well/{well.name}/uploadFile2")@PostpublicvoiduploadFile2(Wellwell,finalUploadedFileFiledata,Stringmodulo,Stringpasta,Stringdestino){Stringpath;if(pasta!=null){path=WellUtil.PATH_WELL+sep+modulo+pasta;System.out.println("teste upload se pasta diferente null"+path);}else{pasta="";path=WellUtil.PATH_WELL+sep;System.out.println("teste upload se pasta = null"+path);}System.out.print("\n\n"+path);Responseresponse=newResponse();response.setName(Filedata.getFileName());Filefile=newFile(path,Filedata.getFileName());try{FileOutputStreamos=newFileOutputStream(file);IOUtils.copyLarge(Filedata.getFile(),os);response.setMsg(I18nUtils.getText("arq_env_ok",wellUtil.getLang()));result.use(xml()).from(file).serialize();}catch(IOExceptione1){Stringexcecao=e1.getMessage();response.setMsg("Erro: "+excecao);result.use(xml()).from(file).serialize();}}
Lucas_Cavalcanti
vc tá com o commons-fileupload no classpath ou tá usando o upload do servlet3?
david.cs20
Sim tenho a seguinte versão do commons-fileupload-1.2.2.jar no Classapath.
Lucas_Cavalcanti
vou ver se eu consigo debugar hoje a noite pra ver pq não está funcionando…
se vc quiser adiantar as coisas, configure o source do VRaptor no eclipse e debugue essa classe:
ve o que acontece nesse pedaço de código que eu destaquei.
Lucas_Cavalcanti
Testei aqui com a versão mais nova do VRaptor (3.5.3),
esse form:
Porem não posso usar a versão mais atual do sistema como você testou aqui estou tendo que utilizar a versão 3.1.2. não sei se isso pode esta interferindo.