Alguém sabe onde posso encontrar referencias de como fazer um download de um arquivo via uma solicitação a um Serlvet?
Não quero que o usuário possa baixar o arquivo via url (www.dominio.com/arquivo.zip), esse arquivo deve estar fora desse contexto, talvez dentro do WEB-INF, sei lá, e que o usuário fizesse uma requisição a um servlet e q este retornasse o arquivo mediante alguns parametros (user, senha, file).
É possível? Alguém conhece alguma referencia, procurei no fórum e não encontrei algo direto.
Agradeço,
Eduardo
         
        
          
        
           
           
           
         
         
            
            
          
       
      
        
        
          Eduardo, nao sei se eh o q vc quer…
mas uma vez tive q fazer algo parecido…gerar um relatorio em .pdf, por ex, e depois abrir a janela de download p/ o usuario baixa-lo…
se nao me engano mto, o componente q usei chama-se download4j…pesquise por isso aki no GUJ ou no Google q vc vai achar alguma coisa…
se achar o link, coloko aki p/ vc…
falow
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Obrigado, encontrei esse topico no guj:
http://www.guj.com.br/forum/viewtopic.php?t=3052&highlight=download4j
vou procurar no google mais sobre isso!
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Na sua servlet você poder fazer isso:
File file = new File("nomedoarquivo");                
                    
if (file.exists())
{
    response.setHeader("Content-type", "application/octet-stream");
    response.setHeader("Content-Disposition","attachment;filename="" + file.getName() + """);
    FileInputStream in = new FileInputStream(file);
    OutputStream out = response.getOutputStream();
    int buflen = 1024;
    byte[] buffer = new byte[buflen];
    int read;
    int length = 0;
    while ((read = in.read(buffer, 0, buflen)) > 0) {
        length += read;
        out.write(buffer, 0, read);
    }
    response.setContentLength(length);
    out.flush();
    out.close();
    in.close();
}
         
        
        
           
           
           
         
         
            
            
          
       
      
        
        
          Valeu leonardo, funcionou muito bem!