Sistema de download jsp, servlet

4 respostas
J

Ola
feliz 2010 para todos

estou tentando fazer um sistema de download utilizando jsp e servlets

tipo
minha pasta onde fica os arquivos nao eh publica
ex: /mnt/files

eu precisaria qeu o servlet criasse um link ou algo parecido que fizesse o lado cliente da pagina se comunicar com os arquivos desta pasta

alguem aii tem algum exemplo alguma ideia?

obrigado

4 Respostas

J

como éque emano?

tafazendo em que ?

J

estou fazendo em java

assim
eu tenho um sistema de upload que envia os arquivos para uma pasta
por exemplo
/mnt/files
essa pasta não é publica nao pode ser acessada pelo navegador

eu precisaria de um sistema que copiasse o arquivo desta pasta e enviasse para o navegador entende

eu achei um post que esplica algo parecido
http://www.guj.com.br/posts/list/75067.java

so nao sei se funciona com arquivos grandes tipo 700mb
vou testar aqui

J

ok galera nao precisa mais ja consegui

ta ai o codigo para quem precisar 8)

protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        FileInputStream input = new FileInputStream("ARQUIVO A SER LIDO DO SERVER"); 
        byte[] buffer = new byte[1024]; // le o arquivo a cada 1kb
        ServletOutputStream out = response.getOutputStream();
        int read = 0;
        while((read = input.read(buffer)) != -1){

           out.write(buffer);
           out.flush();
        }

           out.close();


    }
so precisa dizer qual o nome do arquivo com o
response.setHeader("Content-disposition", "attachment; filename=" + nomeArquivo);
e fazer outras implementações :wink: vlw abraço
M

Olá galera. Continuando este tópico, fiz a implementação do código, só que ao fazer o download de arquivos maiores de 400MB, o heap da JVM estoura rapidamente. Estou realizando um trabalho em que é necessário fazer download de arquivos do servidor de até 2GB e não apenas até 400MB.
Alguém pode ajudar? Segue o código:

HttpServletResponse response =(HttpServletResponse) context.getResponse();
            
            response.setHeader("Content-Disposition","attachment;filename=\"" + nomeDoArquivoGeradoParaDownload + "\"");
            response.setContentLength((int) filez.length());

            
            response.setContentType("application/download");

            
            try {
                FileInputStream fis = new FileInputStream(filez);
                ServletOutputStream out = response.getOutputStream();
                FileInputStream in = new FileInputStream(filez);
                            byte[] buffer = new byte[1024];
                            int read = 0;
                            while((read = in.read(buffer)) != -1){
                                out.write(buffer);
                                out.flush();
                            }
                            out.close();
            } catch (IOException e) {
                System.out.print("Erro no envio do arquivo");
                e.printStackTrace();
            }
Caused by: java.lang.OutOfMemoryError: Java heap space
        at org.ajax4jsf.io.ByteBuffer.<init>(ByteBuffer.java:54)
        at org.ajax4jsf.io.ByteBuffer.append(ByteBuffer.java:112)
        at org.ajax4jsf.io.FastBufferOutputStream.write(FastBufferOutputStream.java:92)
        at org.ajax4jsf.webapp.FilterServletResponseWrapper$ByteArrayServletOutputStream.write(FilterServletResponseWrapper.java:257)
Criado 2 de janeiro de 2010
Ultima resposta 24 de out. de 2011
Respostas 4
Participantes 3