Servlet aceitando download instantaneamente?

0 respostas
Z

Olá a todos =]
Estou com uma classe, que faz um simples download, porém com uma propriedade muito estranha.

String caminho = getDownloader().getDir() + getDownloader().getListaArquivos().get(indice);
        File file = new File(caminho);
        FileInputStream fileIn = new FileInputStream(file);
        ServletOutputStream out = resp.getOutputStream();
        
        byte[] outputByte = new byte[2*4096];
        
        int contaByte = 0;
        System.out.println("pre-loop");
        while((contaByte  = fileIn.read(outputByte, 0, 2*4096)) != -1) {
            out.write(outputByte, 0, 2*4096);
        }
        System.out.println("pos-loop");

Notem os prints pos e pre loop. È ai que está o problema. Quando eu clico para baixar um arquivo, eu tenho a mensagem Pre-Loop, e aparece a tela Salvar/Abrir do arquivo que está sendo baixado. Depois do download completar, eu tenho PosLoop.

O problema é, se eu cancelo o download. Cancelar 1 download nao faz diferença mas se eu clico para fazer 5 downloads e cancelo os 5 por exemplo, a aplicação trava.

Alguem sabe como pular essa tela de salvar/abrir de download e começar o download instantaneamente , ou algum método mais eficaz de se fazer o download ? Estou usando struts.

Obrigado pela atenção.

Criado 2 de março de 2011
Respostas 0
Participantes 1